我最近将我的机器更新为Node.js版本7.5.0(如果我记得很清楚,我以前使用的是版本4)。
以前工作的其中一个应用程序不再起作用。这个问题可以像这样重现:
var connectionString = 'mongodb://127.0.0.1:27017/blog',
mongojs = require('mongojs'),
db = mongojs(connectionString, ['articles']),
dataArticles = db.collection('articles');
db.on('error', function (err) {
console.log('A');
});
db.on('connect', function () {
console.log('B');
});
dataArticles.find({}).toArray(function (err, articles) {
console.log('C');
});
此代码在升级之前工作正常,但现在,没有调用任何回调。没有错误,没有。控制台仍然是空的。
如果我用:
替换最后一个块db.runCommand({ping: 1}, function (err, res) {
console.log('C');
});
行为没有改变。
代码看起来非常像the official documentation中的代码。有a similar question on StackOverflow,但在那里,显式打开了与数据库的连接;就我而言,与文档类似,我让mongojs
处理连接。
为什么它没有到达回调?
答案 0 :(得分:0)
这是一个简单的问题,包与Node.js的版本冲突。
虽然我更新了Node.js和依赖项的版本,但我忘了运行npm install
,导致仍然使用旧包。
我想在mongojs
包的旧版本中存在一个问题,阻止它在Node.js 7.5上运行时调用回调。这个bug是未知的(因为没有人试图在最新版本的Node.js上运行一个过时的软件包版本),或者在以后的版本中已经知道并修复了它。