我开始学习angular2,我在示例中看到它们覆盖了配置文件中的process.env.NODE_ENV和process.env.ENV变量。此代码来自this example
的webpack.prod.js// webpack.prod.js
const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
重写process.env.NODE_ENV和process.env.ENV变量的原因是什么。 nodejs或angular 2中是否存在使用此变量的内容?
答案 0 :(得分:2)
最简单的用例之一是定义dev模式或prod模式,引导app:
if ( 'development' === ENV && HMR === true ) {
// activate hot module reload
let ngHmr = require( 'angular2-hmr' );
ngHmr.hotModuleReplacement( main , module );
} else {
enableProdMode(); // which run Angular2 app in production mode
}
所以一般来说,我们可以在很多不同的场景中使用它们,你想把一个变量从服务器(即命令行)传递到你的app。
答案 1 :(得分:1)
这不仅仅是关于angular2的事情。当您想要从服务器到客户端公开env变量时,通常最好的做法是使用稍微不同的名称映射它们,并仅显示与客户端有关的项目。
这样就不能简单地看看你的API端点暴露了env vars并锻炼了你所有的服务器环境。
在这个特定的例子中,从域的角度来看也是有意义的。尽管process.env.ENV可能与NODE_ENV具有相同的值,但它不代表node.js的环境,而是表示angular正在运行的ENV。
从那时起,它实际上是process.env.NG_ENV或process.env.ENV