我将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)
任何帮助?
答案 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
我猜错误应该对人类更加全面......类似于"连接开始但未完成"对我们的理解会更好。