【问题标题】:Can't get jhipster (6.3.1) generated application running on IE11无法在 IE11 上运行 jhipster (6.3.1) 生成的应用程序
【发布时间】:2019-10-14 20:43:05
【问题描述】:

我正试图让我的JHipster 6.3.1 生成的应用程序在IE 11 中运行,但不断收到一个接一个错误。根据我在polyfill.ts 中使用的导入,我得到了从“符号”未定义”到普通“语法错误”的任何内容,有时根本没有特别的错误,只是一个带有通用 JHipster 的页面

发生错误:-(

我尝试了 polyfillstsconfig.json 设置的不同组合。我已经按照 Angular 8 文档安装了推荐的 polyfills,但似乎 jhipsters angular != standard angular 作为所有关于 IE11 的纯 angular 8 文档都没有帮助。

我知道JHipster 不再支持IE 11,但由于Angular 有关于使用polyfills 和差异加载使其工作的具体说明,我预计(假设)这将是一个相当直接的修复。

【问题讨论】:

  • 由于您使用的是angular 8,请参考my reply in this thread将您的应用程序配置为使用“es5”目标(最好使用第二种方法),然后使用ng serve --configuration es5命令运行您的应用程序。
  • 我已经尝试过目标“es5”。没用。还有更多关于如何使 Angular 8 与 IE 11 配合的教程,这不是我的问题。问题似乎是 JHipster 生成 Angular 8 内容的方式。

标签: angular internet-explorer-11 jhipster


【解决方案1】:

正如我所说的here,我设法做到了以下方式。

首先,添加那些 package.json 依赖项:@babel/core@babel/preset-envbabel-loader

yarn add @babel/core @babel/preset-env babel-loader --exact --dev

(用以下版本测试:

    "@babel/core": "7.6.4",
    "@babel/preset-env": "7.6.3",
    "babel-loader": "8.0.6",

)

现在在src/main/webapp/app/polyfills.ts 的顶部添加以下行:

import 'core-js/stable';
import 'regenerator-runtime/runtime';

webpack/webpack.common.js 之后

            {
                test: /manifest.webapp$/,
                loader: 'file-loader',
                options: {
                    name: 'manifest.webapp'
                }
            },

添加以下行:

            {
                test: /\.js/,
                use: {
                  loader: 'babel-loader',
                  options: {
                    "presets": [
                      [
                        "@babel/preset-env",
                        {
                          "targets": {
                            "firefox": "60",
                            "ie": "11"
                          },
                          "useBuiltIns": "entry",
                          "corejs": 3
                        }
                      ]
                    ]
                  }
                },
                exclude: /@babel(?:\/|\\{1,2})runtime|core-js/,
              },

最后,将tsconfig.jsontsconfig-aot.json 中的target 更改为es5

这是我的完整测试:

sudo rm -rf /dev/shm/myproject
cd /dev/shm/
mkdir myproject
cd myproject
mkdir /dev/shm/m2cache /dev/shm/yarncache
sudo tee myproject.jdl <<EOF
application {
    config {
        baseName MyProject
        clientPackageManager yarn
        jhiPrefix mp
        enableTranslation false
        languages [fr]
        nativeLanguage fr
        packageName com.mycompany.myproject
        prodDatabaseType postgresql
        skipUserManagement true
    }
    entities *
}

entity MyEntity {
    label String
}
EOF
JHIPSTER_VERSION=v6.3.1
sudo chown -R 1000:1000 . /dev/shm/m2cache /dev/shm/yarncache
docker run -it --rm --name jhipster -v "$(pwd):/home/jhipster/app" -v /dev/shm/m2cache:/home/jhipster/.m2 -v /dev/shm/yarncache:/home/jhipster/.cache/yarn -v "$HOME/.gitconfig:/home/jhipster/.gitconfig:ro" jhipster/jhipster:$JHIPSTER_VERSION jhipster import-jdl ./myproject.jdl --force

# WAIT FOR THE APPLICATION TO BE GENERATED

docker run -it --rm --name jhipster -v "$(pwd):/home/jhipster/app" -v /dev/shm/m2cache:/home/jhipster/.m2 -v /dev/shm/yarncache:/home/jhipster/.cache/yarn -p 9000:9000 -p 8080:8080 jhipster/jhipster:$JHIPSTER_VERSION yarn add @babel/core @babel/preset-env babel-loader --exact --dev

# WAIT FOR THE YARN COMMAND TO END

echo "
import 'core-js/stable';
import 'regenerator-runtime/runtime';

$(cat src/main/webapp/app/polyfills.ts)
" | sudo -u '#1000' tee src/main/webapp/app/polyfills.ts

cat > /dev/shm/webpack.patch <<EOF
            {
                test: /\.js/,
                use: {
                  loader: 'babel-loader',
                  options: {
                    "presets": [
                      [
                        "@babel/preset-env",
                        {
                          "targets": {
                            "firefox": "60",
                            "ie": "11"
                          },
                          "useBuiltIns": "entry",
                          "corejs": 3
                        }
                      ]
                    ]
                  }
                },
                exclude: /@babel(?:\/|\\{1,2})runtime|core-js/,
            },
EOF
sudo -u '#1000' sed -i $'/Ignore warnings about System.import in Angular/{e cat /dev/shm/webpack.patch\n}' webpack/webpack.common.js

for FILE in tsconfig.json tsconfig-aot.json; do
  sudo -u '#1000' sed -i 's/"target": "es6"/"target": "es5"/' $FILE
done

docker run -it --rm --name jhipster -v "$(pwd):/home/jhipster/app" -v /dev/shm/m2cache:/home/jhipster/.m2 -v /dev/shm/yarncache:/home/jhipster/.cache/yarn -p 9000:9000 -p 8080:8080 jhipster/jhipster:$JHIPSTER_VERSION bash -c "./mvnw & yarn start --host 0.0.0.0"

感谢https://www.thebasement.be/working-with-babel-7-and-webpack/https://babeljs.io/docs/en/usagehttps://github.com/zloirock/core-js/issues/514#issuecomment-523524472 的提示!

【讨论】:

  • 遇到了同样的问题,效果很好,谢谢。由于此方案允许使用最新的 core-js 版本,因此应该是推荐的方案...
【解决方案2】:

我已经设法让它工作了。我所做的是使用 ng CLI 从旧的 Angular 生成一个 Angular 应用程序。我比较了tsconfig.jsonpackage.jsonpolyfills.ts,并使用了 JHipster 生成的“旧”设置。这给了我以下变化:

package.json 中的低版本:

  • core-js3.1.3^2.4.1
  • zone-js0.9.1^0.7.2

tsfconfig.json:

    "target": "es5",
    "module": "es6",

    "lib": ["es6", "dom"],

最后是polyfills.ts

    import 'core-js/es6/symbol';
    import 'core-js/es6/object';
    import 'core-js/es6/function';
    import 'core-js/es6/parse-int';
    import 'core-js/es6/parse-float';
    import 'core-js/es6/number';
    import 'core-js/es6/math';
    import 'core-js/es6/string';
    import 'core-js/es6/date';
    import 'core-js/es6/array';
    import 'core-js/es6/regexp';
    import 'core-js/es6/map';
    import 'core-js/es6/set';
    import 'core-js/es6/reflect';
    import 'core-js/es7/reflect';
    import 'core-js/es7/array';
    import 'core-js/es7/object';
    import 'zone.js/dist/zone.js';
    require('../manifest.webapp');

这些更改为我提供了一个在 IE11 中工作的应用程序,但仅限于 prod 构建。

【讨论】:

    猜你喜欢
    • 2019-12-13
    • 1970-01-01
    • 2018-04-15
    • 2018-02-27
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 2017-10-07
    • 2020-11-05
    相关资源
    最近更新 更多