在 package.json 中设置 process.env 变量

Setting process.env var in package.json

我正在尝试使用 package.json 设置和检索节点应用程序 process.env 变量,因此通过研究这个问题,我找到了一个示例来设置/检索 process.env 通过'config' 部分,所以我添加了一个新的配置部分,如下所示:

"config" : { "var1" : "test", "var2" : "test2", "var3" : "test3" },

但我无法从 server.js 访问上述任何变量,例如:

console.log(process.env.npm_package_config_var1); 

所以我想知道如何使用 package.json 设置/检索 process.env 变量?谢谢

*我正在使用 npm 4.4.1,节点 7.4.0,我 运行 应用程序使用 (npm 运行 dev)

我不太明白,你想做什么

但是如果你想检索 env 变量,你必须像这样在你的 package.json 中定义你的开发脚本:NODE_ENV=dev node index.js

然后获取您的环境:process.env.NODE_ENV

您不能只在 package.json 中设置环境变量。

您可以使用以下方式在脚本部分设置它们:

"scripts": {
  "start": "ENV_VAR=abc node app.js",
},

或:

 "scripts": {
  "start": "cross-env ENV_VAR=abc node app.js",
},

使用跨环境模块。参见:

环境变量是您的程序在运行时获取的东西,而不是存储在配置中的东西 - 除非您使用类似 dotenv 的东西,请参阅:

但这是使用 .env 文件,而不是 package.json。

You cannot just set environment variables in package.json.

Yes you can.

您可以尝试 node -p process.env 作为您的 npm 脚本来检查您的环境变量。并确保没有其他东西会覆盖您的价值观。这是另一个对我有用的 example

这仅在您使用 npm 启动应用程序时有效:

还有:

"scripts": {
    "start": "node server.js"
},
"config" : { "var1" : "test", "var2" : "test2", "var3" : "test3" }

然后:

npm run start

在 server.js 内,这将正确显示变量:

console.log(process.env.npm_package_config_var1);