MongoError:升级mongoose模块后,处于无效状态的服务器实例未定义

时间:2016-10-28 07:06:14

标签: mongodb mongoose nosql

我将mongoose npm模块从"mongoose": "~3.8.8"更新为"mongoose": "^4.1.12"。我正在使用简单的MEAN项目documented here并在升级mongoose节点模块后出现以下错误:

MongoError: server instance in invalid state undefined
    at Function.MongoError.create (SampleProject\node_modules\mongodb-core\lib\error.js:29:11)
    at Server.connect (SampleProject\node_modules\mongodb-core\lib\topologies\server.js:341:22)
    at Server.connect (SampleProject\node_modules\mongoose\node_modules\mongodb\lib\server.js:357:17)
    at open (SampleProject\node_modules\mongoose\node_modules\mongodb\lib\db.js:222:19)
    at Db.open (SampleProject\node_modules\mongoose\node_modules\mongodb\lib\db.js:245:44)
    at MongoStore._open_database (SampleProject\node_modules\connect-mongo\lib\connect-mongo.js:182:15)
    at MongoStore._get_collection (SampleProject\node_modules\connect-mongo\lib\connect-mongo.js:177:14)
    at MongoStore.get (SampleProject\node_modules\connect-mongo\lib\connect-mongo.js:222:10)
    at Layer.session [as handle] (SampleProject\node_modules\express-session\index.js:204:11)
    at trim_prefix (SampleProject\node_modules\express\lib\router\index.js:230:15)
    at SampleProject\node_modules\express\lib\router\index.js:198:9
    at Function.proto.process_params (SampleProject\node_modules\express\lib\router\index.js:253:12)

任何帮助?

1 个答案:

答案 0 :(得分:2)

这是我案例的解决方案。 当Mongoose连接启动并且您尝试在连接完成之前访问数据库时会发生此错误。

就我而言,我的MongoDB运行在一个Docker容器中,它暴露了27017端口。 为了能够暴露Container外部的端口,Container内的mongod进程必须侦听0.0.0.0而不仅仅是127.0.0.1(这是默认值)。 因此,连接指令挂起,程序尝试在收集结束之前访问它们。 要解决此问题,只需更改/etc/mongod.conf文件并将bindIp: 127.0.0.1更改为bindIp: 0.0.0.0

我猜错误应该对人类更加全面......类似于"连接开始但未完成"对我们的理解会更好。