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