Angular2 + Webpack DefinePlugin不工作?

chr*_*isz 2 node.js webpack angular

我尝试从angular.io网站上的教程运行Angular2应用程序

Angular2 with Webpack Tutorial on angular.io

安装运行良好(有一些打嗝,它是Ubuntu 14.04 LTS),但我到了npm启动任务工作,服务器工作,甚至应用程序在浏览器中工作,到目前为止一切都很好.

每次我运行npm start时,我在终端中得到以下2个错误,并且在浏览器控制台中:

ERROR in ./src/polyfills.ts
(4,5): error TS2304: Cannot find name 'process'.

ERROR in ./src/main.ts
(7,5): error TS2304: Cannot find name 'process'.
Run Code Online (Sandbox Code Playgroud)

如果你看一下教程,就会解释如何创建webpack配置,有一个webpack.common.js,一个webpack.prod.js和一个webpack.dev.js.在webpack.prod.js中,使用以下代码创建var:

const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
new webpack.DefinePlugin({
    'process.env': {
        'ENV': JSON.stringify(ENV)
    }
})
Run Code Online (Sandbox Code Playgroud)

main.tspolyfills.ts的VAR由该引用:

if (process.env.ENV === 'production') {
    enableProdMode();
}
Run Code Online (Sandbox Code Playgroud)

但似乎,Typings不知道如何将这些变量注入到webpack.DefinePlugin中,并将其编译到已编译的Javascript中(这就是我在想的,我可能错了)

如果有人遇到同样的问题,或者任何人都可以帮助我,我会非常感激!(所有代码都来自教程,所以任何尝试过本教程的人都可能遇到同样的问题,我猜?)

谢谢!

小智 14

我在这里遇到了同样的问题(做同样的教程).为了解决这个问题,我在typings.json所在的同一文件夹上创建了一个名为typings.d.ts的文件(编译器默认包含此文件)并向其添加以下声明:

declare var process: any;
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!:)