【问题标题】:Can't access NODE_ENV from ng2 app with webpack无法使用 webpack 从 ng2 应用程序访问 NODE_ENV
【发布时间】:2018-02-10 01:52:40
【问题描述】:

我正在尝试通过以下方式访问 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);

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

console output

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

我们将不胜感激。

【问题讨论】:

  • 您使用的是哪个操作系统?

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


【解决方案1】:

检查是否设置了NODE_ENV?

对于 Linux,您可以使用:

printenv

对于 MAC:

在终端中运行Env 命令

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

【讨论】:

  • 你可以使用 webpack 命令传递 env 变量,例如:webpack-dev-server --env=dev
【解决方案2】:

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

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

希望这会有所帮助...

【讨论】:

    猜你喜欢
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    相关资源
    最近更新 更多