NodeJS – process.env.NODE_ENV条件在使用package.json脚本时不起作用
我有3个不同的数据库用于testing,开发和生产。
现在,我希望我的快速应用程序根据我运行的脚本在这些数据库之间切换。
These are my current scripts: "scripts": { "start": "NODE_ENV=dev && node index.js", "test": "mocha --timeout 10000" }
我正在像这样在testing脚本的顶部分配process.env.NODE_ENV值,并且testing脚本正确运行正确的DB:
process.env.NODE_ENV = 'test';
但是当我运行npm start
,节点似乎没有得到值。 例如在这个代码上:
//数据库连接
let db; if (process.env.NODE_ENV == 'test') { mongoose.connect(config.DB.test, options); db = mongoose.connection; } else if (process.env.NODE_ENV == 'dev') { mongoose.connect(config.DB.dev, options); db = mongoose.connection; app.use(morgan('combined')); } else if (process.env.NODE_ENV == 'prod') { mongoose.connect(config.DB.prod, options); db = mongoose.connection; app.use(morgan('combined')); } db.on('error', console.error.bind(console, 'connection error:'));
我得到了Cannot read property 'on' of undefined
错误”(当运行相同的代码与testing脚本连接到正确的数据库)。
我究竟做错了什么?
尝试使用此代替:
"start": "NODE_ENV=dev node index.js",
删除&&
我想添加一个方法来处理env也没有设置:
var env = process.env.NODE_ENV || 'dev'
然后改变每一个指向process.env.NODE_ENV
env