NodeJS 10.1.0连接MongoDB 3.6.5时mongo_client.js:891报错求助
问题拆解与解决方案
让我帮你一步步梳理问题所在,然后给出修复方案:
核心问题1:MongoDB连接端口写错了!
你在databaseCreator.js里写的连接URL是mongodb://localhost:3000/test,但MongoDB默认的服务端口是27017,而3000是你Node.js服务器正在监听的端口——这相当于你在让Node程序连接自己,而不是MongoDB服务,这就是终端抛出[object Object]错误的根本原因。
核心问题2:URL Parser的废弃警告
终端里的DeprecationWarning提示很明确:新版MongoDB驱动要求在MongoClient.connect时传入{ useNewUrlParser: true }配置项,否则会触发这个警告。
修复后的完整代码
修改后的databaseCreator.js
var mongodb = require("mongodb"); exports.createDatabase = function (request, response) { var client = mongodb.MongoClient; // 修正MongoDB端口为默认的27017 var connectionURL = "mongodb://localhost:27017/test"; // 添加useNewUrlParser配置,解决废弃警告 client.connect(connectionURL, { useNewUrlParser: true }, function(err, db) { // 优化错误处理:直接throw会导致服务器崩溃,改成友好响应 if (err) { console.error("数据库连接失败:", err); response.writeHead(500, {'Content-Type': 'text/plain'}); response.write('Database creation failed!'); response.end(); return; } console.log("Database created!"); db.close(); response.writeHead(200, {'Content-Type': 'text/plain'}); response.write('Database created!'); response.end(); }); }
额外的优化建议
- 稳定化驱动版本:你的
package-lock.json里mongodb是3.1.0-beta4,beta版本可能存在不稳定问题,建议换成适配MongoDB 3.6.5的稳定版,运行命令:npm install mongodb@3.6 --save - 错误处理完善:原代码里直接
throw err会导致Node服务器崩溃,改成捕获错误并给客户端返回错误响应,能让服务更健壮。
验证步骤
- 先确保MongoDB服务已经启动(在终端运行
mongod命令启动服务)。 - 重启你的Node.js应用。
- 访问
http://127.0.0.1:3000/,此时终端应该只会显示:
没有任何报错,说明问题解决啦!Server running at http://127.0.0.1:3000/ Database created!
内容的提问来源于stack exchange,提问作者MadEmperorYuri
相关产品推荐
相关产品推荐

