mongoose.connect 在连接到 mongodb 后不调用回调

Posted

技术标签:

【中文标题】mongoose.connect 在连接到 mongodb 后不调用回调【英文标题】:mongoose.connect not invoking callback after connection to mongodb 【发布时间】:2017-10-31 12:25:25 【问题描述】:

我正在尝试使用 Mongoose 连接到 MongoDB。但它既不会引发错误,也不会连接到数据库。以下是我的代码。

const express = require('express');
const app = express();
const port = process.env.PORT || 8080;
const mongoose = require('mongoose');

console.log('Hi, there!!');    

mongoose.connect('mongodb://localhost:27017/db_name', (err) => 
 console.log('Callback called');
 if(err) throw err; 
 console.log('Connected to database');
)

在上面的代码中,回调中的 console.log 都不会发生。但是mongoose.connect 之外的任何地方都可以像 console.log('Hi, there!!')

使用的版本

express: 4.0.0
mongoose: 3.8.40
node: 7.7.3
mongodb: 3.4.0

【问题讨论】:

这段代码在我的机器上运行良好。抛出错误或连接到数据库。我想这可能与版本有关。也许如果您添加您正在使用的节点和猫鼬版本,那么有人可以发现一些东西 我已将版本添加到帖子中 【参考方案1】:

使用 mongoose: 3.8.40 我在控制台中得到了这个:

 Error: Cannot find module '../build/Release/bson'
    at Function.Module._resolveFilename (module.js:470:15)
    at Function.Module._load (module.js:418:25)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/Users/kevin/nemeacreation/sites/test/***/node_modules/bson/ext/index.js:15:10)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3) code: 'MODULE_NOT_FOUND' 
js-bson: Failed to load c++ bson extension, using pure JS version
Hi, there!!

升级到"mongoose": "~4.4" 为我修复了它。我在这里得到了答案:https://***.com/a/35516644/2829540

有关信息,mongoose 的最新版本是4.10.4

【讨论】:

这对我来说也适用于其他一些更新。谢谢 也解决了我的问题!

以上是关于mongoose.connect 在连接到 mongodb 后不调用回调的主要内容,如果未能解决你的问题,请参考以下文章

Promisifying Mongoose Connect 中的类型错误

Mongoose 无法连接到 mLab 环境

Mongoose 无法连接到 mLab 环境

如何连接到最新的 Mongoose 版本

mongoose没有连接到localhost

mongoose 文档 Connections