【问题标题】:what does SET NODE_ENV=dev do?SET NODE_ENV=dev 是做什么的?
【发布时间】:2019-10-08 22:13:23
【问题描述】:

这听起来像是一个基本问题,但我在 google 上找不到太多关于此的信息。

我正在关注测试节点上的教程https://scotch.io/tutorials/test-a-node-restful-api-with-mocha-and-chai。 package.json中有一段代码

"scripts":{
  "start": "SET NODE_ENV=dev && node server.js",
}

但是,当我运行它时,我得到了错误。

WARNING: NODE_ENV value of 'dev ' did not match any deployment config file names.

所以我的问题是,SET NODE_ENV 到底是做什么的?当你想把它投入生产时,你如何修改它?

于 2016 年 10 月 10 日编辑 我从文档https://github.com/lorenwest/node-config/ 中发现 NODE_ENV 将在 config 文件夹中查找文件。所以 SET NODE_ENV = 'dev' 寻找 /config/dev.json。即使 dev.json 存在,错误也会发生,这很奇怪。该应用程序运行正常,所以我只是想知道错误是什么意思。

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    这是一种设置环境变量的钝方法。您的代码(或您需要的模块中的代码)可能会读取它并根据它的设置方式做出决定。

    我从您的错误中猜测,您正在使用 convict 或另一个假设 NODE_ENV 的配置模块会告诉它您是在开发模式还是生产模式或测试模式下运行应用程序,然后加载名称匹配的配置文件,例如dev.jsondev.js 为该环境设置了特定的东西。

    您可以在不使用 SET 命令的情况下执行相同的操作,只需在 npm 启动脚本中执行 NODE_ENV=dev node server.js

    【讨论】:

      【解决方案2】:

      SET NODE_ENV=dev 完全按照它所说的去做。为“dev”值建立一个名为 NODE_ENV 的环境变量。 但是您要问的可能是这对我的应用程序有何影响?

      这取决于您的应用如何使用它。在源代码中找到检查此值的位置(类似 process.env.NODE_ENV 或类似的东西),然后就可以理解它

      在您的情况下,它用于几件事。加载正确的配置文件,建立特定的日志属性,获取 mongo db URI 等

      【讨论】:

        【解决方案3】:

        尝试删除 'dev' 之后的空格,例如:

        scripts":{
          "start": "SET NODE_ENV=dev && node server.js",
        }
        

        【讨论】:

          猜你喜欢
          • 2015-09-09
          • 1970-01-01
          • 1970-01-01
          • 2018-09-23
          • 2017-07-08
          • 2020-03-02
          • 2012-10-04
          • 2020-08-22
          • 1970-01-01
          相关资源
          最近更新 更多