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';