【问题标题】:Get environment variable defined in Linux bash to webpack将 Linux bash 中定义的环境变量获取到 webpack
【发布时间】:2017-06-04 23:39:08
【问题描述】:

我已经检查了大量关于“webpack 中的环境变量”的 SO 问题,例如使用定义插件:

new webpack.DefinePlugin({'ENV': JSON.stringify('staging')})

但我无法找到一种方法来注入在 linux bash shell 中定义的环境变量,而不是使用硬编码的staging 字符串

在我的生产和暂存环境中,我定义了诸如 $ENV$API_KEY 之类的变量,我想在我的 webpack / ReactJs 代码中使用它们的值。

编辑

我注意到,如果我从 cli 运行 webpack 命令:

 $ ENVIRONMENT=staging
 $ node_modules/.bin/webpack -p

并且在我的 webpack.config.js 文件中定义了

 new webpack.DefinePlugin({'ENV': JSON.stringify(process.env.ENVIRONMENT)})

这不起作用(ENV 在我的 JS 代码中未定义),

但是,如果我在同一行上运行它,它似乎可以工作 - 环境似乎在 webpack.config.js 文件中可用:

$ ENVIRONMENT=staging node_modules/.bin/webpack -p

所以我真的很想完成这项工作,而不必在与 webpack 命令相同的行上定义 ENVIRONMENT 变量。

【问题讨论】:

  • 使用process.env.$ENV?

标签: reactjs webpack


【解决方案1】:

nodejs 中,您可以通过process.env 对象获取您的环境变量。在您的情况下,您可以通过 process.env.$ENVprocess.env.$API_KEY 分别获得 $ENV$API_KEY 环境变量。

【讨论】:

  • 对我来说,$ 字符在干扰。这有效:process.env.FOO,而不是process.env.$FOO。这是来自webpack.config.js 文件。
【解决方案2】:

愚蠢的我忘了在 bash 终端中导出变量

$ export ENVIRONMENT=staging 
$ node_modules/.bin/webpack -p

工作正常,正如所指出的,然后可以从 webpack.config.js

使用 process.env.ENVIRONMENT 访问 ENVIRONMENT 变量

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 2016-11-19
    • 2020-01-19
    • 2019-06-24
    • 1970-01-01
    相关资源
    最近更新 更多