树莓派2部署MongoDB 2.4与Node.js连接报wire版本不兼容错误
解决MongoDB 2.4与Node.js驱动的Wire Version不兼容问题
你碰到的是典型的版本兼容冲突——当前使用的Node.js MongoDB驱动要求的Wire Protocol版本(至少2),比MongoDB 2.4支持的版本(0)要高,所以连接时触发了这个错误。下面给你两种可行的解决方案,你可以根据自身需求选择:
方案一:降级Node.js MongoDB驱动版本
这是最直接的快速修复方案,不需要改动MongoDB本身:
- 先卸载当前的高版本驱动:
npm uninstall mongodb - 安装兼容MongoDB 2.4的驱动版本,推荐
mongodb@2.2.36(这个版本明确支持Wire Version 0):npm install mongodb@2.2.36 --save - 调整你的连接代码适配旧版驱动的API(旧版以回调为主,和新版Promise风格不同),示例代码:
const MongoClient = require('mongodb').MongoClient; const dbUrl = 'mongodb://localhost:27017/你的数据库名称'; MongoClient.connect(dbUrl, (err, db) => { if (err) throw err; console.log('成功连接到MongoDB'); // 示例:查询你现有数据中的一条记录 db.collection('你的集合名称').findOne({}, (err, doc) => { if (err) throw err; console.log('查询到的数据:', doc); db.close(); }); });
方案二:升级MongoDB到2.6及以上版本
如果你想长期使用新的Node.js驱动特性,建议升级MongoDB。树莓派2是ARMv7架构,可以安装MongoDB 2.6或3.2(更高版本官方不再支持ARM):
- 先备份现有数据(非常重要,避免数据丢失):
mongodump --out /home/pi/mongodb-backup - 卸载旧版本MongoDB:
sudo apt-get remove --purge mongodb - 添加MongoDB 2.6的软件源并安装:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 echo "deb http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/2.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-2.6.list sudo apt-get update sudo apt-get install -y mongodb-org=2.6.12 mongodb-org-server=2.6.12 mongodb-org-shell=2.6.12 mongodb-org-mongos=2.6.12 mongodb-org-tools=2.6.12 - 启动MongoDB服务并设置开机自启:
sudo service mongod start sudo update-rc.d mongod defaults - 恢复之前备份的数据:
mongorestore /home/pi/mongodb-backup - 现在你就可以使用最新版的Node.js MongoDB驱动正常连接了。
内容的提问来源于stack exchange,提问作者Benjamin Haegenlaeuer
相关产品推荐
相关产品推荐

