【发布时间】:2016-12-10 10:46:13
【问题描述】:
我为测试、开发和生产设置了 3 个不同的数据库。
现在我希望我的 express 应用根据我运行的脚本在这些数据库之间切换。
These are my current scripts:
"scripts": {
"start": "NODE_ENV=dev && node index.js",
"test": "mocha --timeout 10000"
}
我像这样在测试脚本的顶部分配 process.env.NODE_ENV 值,并且测试脚本在正确的 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 错误(在运行相同代码时,测试脚本连接到正确的数据库)。
我做错了什么?
【问题讨论】:
标签: javascript node.js