我正试图通过以下方式访问NODE_ENV变量,
在webpack.config.js
中
new webpack.DefinePlugin({
'process.env': {
'API_URL': process.env.API_URL,
'NODE_ENV': process.env.NODE_ENV
}
});
然后在应用程序文件中: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变量时,我会得到以下输出:
控制台输出
注意,我可以获得API_URL的值,但不能获得NODE_ENV的值,并且两者都以相同的方式设置,export ENV_VAR=value
。
如有帮助,不胜感激。
检查是否设置了NODE_ENV?
对于Linux,您可以使用:
printenv
对于MAC:
在终端中运行Env
命令
我认为在设置env变量时可能存在拼写错误。
问题在于webpack替换变量的方式,它们应该用双引号或JSON.stringfy((定义。
https://webpack.js.org/plugins/define-plugin/
希望这能帮助。。。