基于这里的答案https://stackoverflow.com/a/22524056/777700我设置了完全相同的配置选项,但它不起作用。
我的(部分)app.js 文件:
console.log('environment: '+process.env.NODE_ENV);
const config = require('./config/db.json')[process.env.NODE_ENV || "development"];
console.log(config);
我的./config/db.json 文件:
{
"development":{
"host":"localhost",
"port":"3306",
"username":"root",
"password":"",
"database":"dbname"
},
"production":{
"host":"production-host",
"port":"3306",
"username":"user",
"password":"pwd",
"database":"dbname"
}
}
Console.log 输出:
environment: development
undefined
并且应用程序崩溃。知道为什么吗?文件在那里,如果我删除 require() 的 [...] 部分,它会打印出 db.json 文件,有了它,它会打印出 undefined。
编辑
我尝试在 require() 之后添加 console.log(typeof config)
来查看我得到的结果,我注意到如果我 require('./config/db.json')[process.env.NODE_ENV]
我得到 undefined
,但是如果我 require('./config/db.json')["development"]
我会得到正确的对象。
版本:
nodeJS 6.11.4
express 4.16.2
最佳答案
经过多次调试和网上搜索,终于找到了解决方案。问题是我在 Windows 机器上使用 npm run dev
命令,而我的“dev”命令看起来像 SET NODE_ENV=development && nodemon server.js
。
有经验的人会注意到&&之前有一个空格,它在变量development
后面添加了一个空格,因此我要比较的变量是“development”
,而不是我想的“development”
。
因此,其他问题的原始答案确实有效,并且确实加载了正确的配置!
关于json - NodeJS开发生产环境配置文件加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46755852/