我和我的团队正在尝试将我们的代码库升级到 Webpack 2,但我们遇到了这两个错误:
“使用类装饰器时需要未捕获的反射元数据垫片”和“无法读取未定义的属性“isDefaultChangeDetectionStrategy””
我们正在与 angular2-webpack-starter 合作,已更新至 RC5,并正在尝试进行此更新。
我们认为错误来自 polyfills.browser.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/weak-map';
import 'core-js/es6/weak-set';
import 'core-js/es6/typed';
import 'core-js/es6/reflect';
// see issue https://github.com/AngularClass/angular2-webpack-starter/issues/709
// import 'core-js/es6/promise';
import 'core-js/es7/reflect';
import 'zone.js/dist/zone';
// Typescript emit helpers polyfill
import 'ts-helpers';
if ('production' === ENV) {
// Production
} else {
// Development
Error.stackTraceLimit = Infinity;
require('zone.js/dist/long-stack-trace-zone');
}
此外,我们的 module.exports 中的 webpack.common.js 条目 obj 如下所示:
module.exports = {
{...},
entry: {
'polyfills': './src/polyfills.browser.ts',
'vendor': './src/vendor.browser.ts',
'main': './src/main.browser.ts'
},
{...}
}
非常感谢任何帮助!
最佳答案
不确定这会有什么帮助,但我也遇到了同样的问题,尽管我使用的是 Angular CLI webpack beta 11 (NG RC5)。在更新 CLI 时,我没有看到 main.ts 应该有
import './polyfills.ts';
在顶部。所以我猜想没有加载任何polyfills,反射错误恰好是第一个错误。
关于angularjs - 错误: 'reflect-metadata shim is required' when upgrading to Webpack 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39259084/