【问题标题】:Setting process.env var in package.json在 package.json 中设置 process.env var
【发布时间】:2017-07-26 05:31:23
【问题描述】:

我正在尝试使用 package.json 设置和检索节点应用程序 process.env 变量,因此通过研究问题,我找到了一个通过“配置”部分设置/检索 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) 运行应用程序

【问题讨论】:

    标签: javascript node.js npm package.json


    【解决方案1】:

    我真的不明白,你想做什么。

    但是,如果您想检索环境变量,您必须在 package.json 中定义您的开发脚本,如下所示:NODE_ENV=dev node index.js

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

    【讨论】:

    • 他的意思是他想设置很多k-v对比如a=xxx b=xxx c=xxx node index.js,想知道有没有配置文件可以做这个工作
    【解决方案2】:

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

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

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

    或:

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

    使用跨环境模块。见:

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

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

    【讨论】:

    • 投票给Environment variables are something that your programs get at runtime, not something stored in a config
    【解决方案3】:

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

    Yes you can.

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

    【讨论】:

    • 应该加前缀npm_package_config_,很重要
    【解决方案4】:

    这仅在您使用 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); 
    

    【讨论】:

      猜你喜欢
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 2022-08-19
      • 2020-03-15
      • 2017-07-12
      相关资源
      最近更新 更多