核心js升级后的Angular 8运行时错误

时间:2019-07-09 16:29:50

标签: angular typescript webpack

在将Angular应用程序从Angular 7.2升级到Angular 8.1并将core-js从2.6.2升级到3.1.4之后,出现了以下运行时错误。我们的应用程序不使用Angular CLI,我们仅直接使用webpack。将core-js版本保持在2.6.2即可正常工作。用新版本的core-js手动加载此polyfill的正确方法是什么?

旧的polyfill.ts将按以下方式加载core-js:

import 'core-js/es6';
import 'core-js/es7/reflect';

我尝试使用新的core-js进行以下操作,但没有运气:

import 'core-js/es'
import 'core-js/es/reflect'

错误:

Uncaught Error: Can't resolve all parameters for Location: (?, ?).
at syntaxError (webpack-internal:///./node_modules/@angular/compiler/fesm5/compiler.js:2687)
at CompileMetadataResolver._getDependenciesMetadata (webpack-internal:///./node_modules/@angular/compiler/fesm5/compiler.js:21589)
at CompileMetadataResolver._getTypeMetadata (webpack-internal:///./node_modules/@angular/compiler/fesm5/compiler.js:21481)
at CompileMetadataResolver._getInjectableTypeMetadata (webpack-internal:///./node_modules/@angular/compiler/fesm5/compiler.js:21704)
at CompileMetadataResolver.getProviderMetadata (webpack-internal:///./node_modules/@angular/compiler/fesm5/compiler.js:21713)
at eval (webpack-internal:///./node_modules/@angular/compiler/fesm5/compiler.js:21651)
at Array.forEach (<anonymous>)
at CompileMetadataResolver._getProvidersMetadata (webpack-internal:///./node_modules/@angular/compiler/fesm5/compiler.js:21611)
at eval (webpack-internal:///./node_modules/@angular/compiler/fesm5/compiler.js:21613)
at Array.forEach (<anonymous>)

2 个答案:

答案 0 :(得分:0)

默认的angular 8 polyfill不包含core-js,因为该框架本身已处理了core-js,因此您可以删除polyfill中的core-js导入

答案 1 :(得分:0)

阅读core-js版本3更改日志和其他文章后,我能够解决此问题。我对在polyfill.ts中导入core-js polyfill的方式进行了更改,解决了上面提到的运行时问题:

import 'core-js/es';
import 'core-js/proposals/reflect-metadata';