SET NODE_ENV = dev做了什么?

时间:2016-10-09 19:54:24

标签: node.js express

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

我正在关注测试节点上的教程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,也会发生错误,这很奇怪。该应用程序运行正常,所以我只是想知道错误意味着什么。

3 个答案:

答案 0 :(得分:0)

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

我猜错了,您正在使用convict或其他配置模块,假设NODE_ENV会在开发模式或生产环境中运行应用程序时告诉它模式或测试模式,并加载名称匹配的配置文件,例如dev.jsondev.js,其中为该环境设置了特定内容。

只需在npm启动脚本中执行NODE_ENV=dev node server.js,即可通过SET命令执行相同的操作。

答案 1 :(得分:0)

SET NODE_ENV = dev完全符合它的说法。建立一个名为NODE_ENV的环境var到" dev"值。 但是,您要求的可能是这对我的应用程序有何影响?

这取决于您的应用使用它的方式。在源代码的某个地方查找检查此值的内容(类似于 process.env.NODE_ENV 或类似内容),然后就可以理解它了

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

答案 2 :(得分:0)

尝试删除“ dev”后的空格,例如:

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