MongoError:升级猫鼬模块后处于无效状态的服务器实例未定义
Posted
技术标签:
【中文标题】MongoError:升级猫鼬模块后处于无效状态的服务器实例未定义【英文标题】:MongoError: server instance in invalid state undefined after upgrading mongoose module 【发布时间】:2017-03-11 00:51:50 【问题描述】:我将我的 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)
有什么帮助吗?
【问题讨论】:
将 Mongoose 升级到 4.7.0 后对我来说也是如此 @jmcollin92 运气好吗? 是的。我的 MongoDB 实例根本无法访问(Mongod 听 127.0.0.1 而不是 0.0.0.0)。因此连接被阻塞,随后对 Mongoose 的调用失败并出现此错误。错误不是很清楚,但案例已确定。 @jmcollin92 你能发布一个答案,并附上解决问题的步骤。请它会帮助包括我自己在内的其他人。 是的,当然。打开您的 /etc/mongod.conf 文件,并将具有以下内容的行:bindIp:127.0.0.1 更改为 bindIp:0.0.0.0。然后重启 MongoDB。 【参考方案1】:这是我的案例的解决方案。 当 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
我想这个错误对人类来说应该更全面......像“连接开始但未完成”这样的东西会更好地理解。
【讨论】:
以上是关于MongoError:升级猫鼬模块后处于无效状态的服务器实例未定义的主要内容,如果未能解决你的问题,请参考以下文章