Angular Can';让jhipster(6.3.1)生成的应用程序在IE11上运行

Angular Can';让jhipster(6.3.1)生成的应用程序在IE11上运行,angular,internet-explorer-11,jhipster,Angular,Internet Explorer 11,Jhipster,我正试图让我的JHipster 6.3.1生成的应用程序在ie11中运行,但不断出现一个又一个错误。根据我在polyfill.ts中使用的导入,我得到了从“Symbol”未定义到普通“Syntax error”的任何信息,有时根本没有特殊错误,只有一个带有通用JHipster的页面 发生了一个错误:-( 我尝试了polyfills和tsconfig.json设置的不同组合。我按照angular 8文档安装了推荐的polyfills,但似乎jhipsters angular!=标准angular,

我正试图让我的
JHipster 6.3.1
生成的应用程序在
ie11
中运行,但不断出现一个又一个错误。根据我在
polyfill.ts
中使用的导入,我得到了从“Symbol”未定义到普通“Syntax error”的任何信息,有时根本没有特殊错误,只有一个带有通用JHipster的页面

发生了一个错误:-(

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


我知道
JHipster
不再支持
IE 11
,但由于Angular对如何使用
polyfills
和差分加载进行了具体说明,因此我希望(假设)这将是一个相当直接的修复方法。

我已经设法让它工作起来。我所做的是用ng CLI从一个旧的Angular生成一个Angular应用程序。我比较了
tsconfig.json
package.json
polyfills.ts
,并对JHipster生成的应用程序使用了“旧”设置。这给了我以下信息:所欠变动:

package.json
中降低了以下版本:

  • core js
    3.1.3
    ^2.4.1
  • 区域js
    0.9.1
    ^0.7.2
tsfconfig.json
中:

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

最后是
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
build。

正如我所说,我用以下方法实现了它

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

纱线添加@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中,在

{
测试:/manifest.webapp$/,
加载器:“文件加载器”,
选项:{
名称:“manifest.webapp”
}
},
添加以下行:

{
测试:/\.js/,,
使用:{
加载器:“巴别塔加载器”,
选项:{
“预设”:[
[
“@babel/preset env”,
{
“目标”:{
“firefox”:“60”,
“ie”:“11”
},
“useBuiltIns”:“条目”,
“corejs”:3
}
]
]
}
},
排除:/@babel(?:\/\\{1,2})运行时|核心js/,,
},
最后,将
tsconfig.json
tsconfig aot.json
中的
target
更改为
es5

以下是我的完整测试:

sudorm-rf/dev/shm/myproject
cd/dev/shm/
mkdir myproject
cd myproject
mkdir/dev/shm/m2cache/dev/shm/yarncache

sudo tee myproject.jdl由于您使用的是angular 8,请参阅将您的应用程序配置为使用“es5”目标(最好使用第二种方法),然后使用
ng serve--configuration es5
命令来运行您的应用程序。我已经尝试了target“es5”"。不起作用。关于如何使angular 8与IE 11配合,还有很多教程,这不是我的问题。问题似乎是JHipster生成angular 8内容的方式。有同样的问题,非常有效,谢谢。由于此解决方案允许使用最新的core js版本,因此应该是推荐的解决方案。..
import 'core-js/stable';
import 'regenerator-runtime/runtime';