json - NodeJS开发生产环境配置文件加载

标签 json node.js express require

基于这里的答案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/

相关文章:

java - 在java字符串中添加引号

javascript - NodeJS 请求 mysql DB 以异步方式返回值

javascript - 如何在 Node.js 中从不同的应用程序注入(inject)模块

node.js - Multer-S3 具有锐利的上传和调整功能

css - 卡住顶栏(标题栏)

php - 替换不间断空格 PHP

sql - Azure ARM 模板 "VmAgentNotRunning"

php youtube json解码

javascript - 为什么我的 Nginx-Socket.io-Express-Setup 无法通过 HTTPS 运行?

node.js - 将查询数据从函数返回到 james/express.js 页面