我正在尝试使用Angular 2.但是在将zone.js
作为全局变量导入后,我收到此错误:
我的包及其版本:
"dependencies": {
"angular2": "2.0.0-beta.3",
"es6-promise": "3.0.2",
"es6-shim": "0.33.13",
"expose-loader": "^0.7.1",
"reflect-metadata": "0.1.2",
"rxjs": "5.0.0-beta.0",
"zone.js": "0.5.11"
}
我在index.ts
中导入了zone.js,就像这样import 'expose?Zone!zone.js';
。
而且,我的index.ts
是webpack.config.js
文件中的条目。
如何通过将其公开为全局变量来正确导入zone.js
(使用expose-loader,因为我使用的是WebPack)?
答案 0 :(得分:0)
Zone.js是Angular 2 polyfill的依赖项,如上面Eric Martinez所述。目前,关于让Angular 2与Webpack一起工作的信息似乎很缺乏。碰巧的是,简单的设置并不是那么复杂。
在主条目文件的顶部,或者可能在供应商代码的单独条目文件中,导入以下内容:
// bundle.ts
import 'es6-shim';
import 'angular2/bundles/angular2-polyfills';
import 'rxjs';
这就是你真正需要的。但是,如果要为供应商代码创建单独的块,可能使用Webpack的CommonsChunkPlugin,则应导入稍后将在应用程序中使用的任何其他Angular 2文件,如下所示:
// vendor.ts
import 'es6-shim';
import 'angular2/bundles/angular2-polyfills';
import 'angular2/platform/browser';
import 'angular2/core';
import 'angular2/router';
import 'rxjs';