这听起来像是一个基本问题,但我在谷歌上找不到太多关于此的信息。
我正在关注测试节点上的教程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,也会发生错误,这很奇怪。该应用程序运行正常,所以我只是想知道错误意味着什么。
答案 0 :(得分:0)
这是一种设定环境变量的钝方式。您的代码(或您需要的模块中的代码)可能会读取它并根据其设置方式做出决策。
我猜错了,您正在使用convict
或其他配置模块,假设NODE_ENV会在开发模式或生产环境中运行应用程序时告诉它模式或测试模式,并加载名称匹配的配置文件,例如dev.json
或dev.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",
}