你好
4.12.0
我在我的工作应用程序(Express+mangoose)中添加了一些 Mocha/Chai 测试,我注意到运行该应用程序时看不到一些东西。
问题
在运行我的单元测试时,该过程永远不会退出并且由于芒果(显然)而被闲置。
下面的代码片段没有什么了不起的......我在测试的最后尝试了一些 mongoose#disconnect 但没有改变任何东西..
您能否就阻止进程退出的原因提出建议?
const mongoose = require('mongoose');
import { databaseConfig } from './config/database';
export function setupDatabase() {
mongoose.Promise = require('bluebird');
//mongoose.set("debug", true)
var connection = mongoose.connect(databaseConfig.database, { useMongoClient: true }, (err) => { console.log("Connect error: " + err) });
mongoose.connection.on('connected', () => {
console.log('Connected to database ' + databaseConfig.database);
});
mongoose.connection.on('error', (err) => {
console.log('Database error: ' + err);
});
return mongoose;
}
每次我使用mongoose.connect
时,我总是收到这些警告
弃用警告:
open()
在 mongoose >= 4.11.0 中已弃用,请改用openUri()
,如果使用connect()
或createConnection()
,请设置useMongoClient
选项createConnection()
。 请参阅http://mongoosejs.com/docs/connections.html#use -mongo-client
我在节点上:8.7 ,猫鼬:4.12.2
试试这个,
const mongoose = require('mongoose');
mongoose.Promise = require('bluebird');
import { databaseConfig } from './config/database';
async function setupDatabase() {
// mongoose.set('debug', true);
return await mongoose.connection.openUri(databaseConfig.database);
}
(async function () {
const conn = await setupDatabase();
// closing instance
await conn.close();
}());
好吧,我的错,这不是芒果的错。
我正在使用 mocha 并且必须添加--exit
参数来强制调用 process.exit。
我猜如果没有这个参数 mocha 只是......在测试结束时什么都不做并等待。
强制进程退出只是一种解决方法。 问题是,如果您打开了多个连接并使用mongoose.disconnect()
,它似乎仍然打开了一个套接字。
最有用的评论
强制进程退出只是一种解决方法。 问题是,如果您打开了多个连接并使用
mongoose.disconnect()
,它似乎仍然打开了一个套接字。