无法使用webpack从ng2应用访问NODE_ENV

时间:2017-09-01 03:04:55

标签: node.js angular plugins webpack environment-variables

我试图通过以下方式访问NODE_ENV变量,

webpack.config.js

new webpack.DefinePlugin({
    'process.env': {
        'API_URL': process.env.API_URL,
        'NODE_ENV': process.env.NODE_ENV
    }
});

然后在app文件中:app.config.ts

export interface EnvVars {
    API_URL: string;
    NODE_ENV: string;
}

export const env: EnvVars = {
    API_URL: process.env.API_URL || '',
    NODE_ENV: process.env.NODE_ENV
}

最后auth.ts

import {platformBrowserDynamic} from "@angular/platform-browser-dynamic";
import { enableProdMode } from "@angular/core";
import { env, EnvVars } from "./../shared/app.config";
import {AuthModule} from "./auth.module";

if (env.NODE_ENV == 'production') {
    enableProdMode();
}

console.log(env);

platformBrowserDynamic().bootstrapModule(AuthModule);

所以这是我到处看到的程序,应该没问题,但是当我尝试在应用程序中记录env变量时,我得到以下输出:

console output

请注意,我可以获取API_URL的值,但不能获取NODE_ENV的值,并且两者都以相同的方式设置export ENV_VAR=value

一些帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

检查是否设置了NODE_ENV?

对于Linux,您可以使用:

printenv

对于MAC:

在终端

中运行Env命令

我认为在设置env变量时可能会出现拼写错误。

答案 1 :(得分:0)

问题在于webpack替换vars的方式,它们应该用双引号或JSON.stringify()来定义。

https://webpack.js.org/plugins/define-plugin/

希望这会有所帮助......