我正在尝试使用package.json设置和检索节点app process.env变种,所以通过研究这个问题,我找到了一个通过'config'部分设置/检索process.env的例子,所以我添加了一个新的配置部分,如下所示:
"config" : { "var1" : "test", "var2" : "test2", "var3" : "test3" },
但我无法使用例如:
从server.js访问上述任何变量console.log(process.env.npm_package_config_var1);
所以我想知道如何使用package.json设置/检索process.env var?感谢
*我正在使用npm 4.4.1,节点7.4.0并且我使用(npm run dev)运行应用程序
答案 0 :(得分:12)
您不能只在package.json中设置环境变量。
您可以使用以下命令在脚本部分设置它们:
"scripts": {
"start": "ENV_VAR=abc node app.js",
},
或:
"scripts": {
"start": "cross-env ENV_VAR=abc node app.js",
},
使用cross-env模块。参见:
环境变量是程序在运行时获得的,而不是存储在配置中的东西 - 除非你使用像dotenv这样的东西,参见:
但这是使用.env
文件,而不是package.json。
答案 1 :(得分:3)
您不能只在package.json中设置环境变量。
您可以尝试使用node -p process.env
作为npm脚本来检查您的env变量。并确保没有其他东西可以覆盖您的价值观。这是另一个对我有用的example。
答案 2 :(得分:2)
我真的不明白,你想做什么。
但是如果你想检索env变量,你必须在你的package.json
中定义你的开发脚本,如下所示:NODE_ENV=dev node index.js
然后使用:process.env.NODE_ENV
答案 3 :(得分:0)
这仅在使用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);