You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行nodemon server时MongoDB连接超时Promise pending报错排查

问题根因

报错由两个核心问题共同导致:

  • 启动命令配置错误:执行nodemon server时,实际加载的入口文件为server.js,但该文件仅定义Express实例,数据库连接、服务启动的逻辑全部写在index.js中,启动入口不对会直接导致逻辑执行异常。
  • MongoDB连接失败:代码中Mongo连接参数过时、超时时间设置过短,同时存在连接URI错误、网络不通、IP白名单未配置等可能性,触发MongoServerSelectionError导致进程崩溃,nodemon进入等待文件变更的状态。
解决步骤

1. 修正启动命令

将终端执行的启动命令从nodemon server替换为:

nodemon index.js

修正后检查nodemon启动日志,启动行应显示为[nodemon] starting 'node index.js',无多余参数。

2. 更新MongoDB连接配置

打开index.js,修改MongoClient.connect的配置参数,移除新版驱动已废弃的配置项,调大连接超时时间避免公网连接超时:

MongoClient.connect(
    process.env.RESTREVIEWS_DB_URI,
    {
        maxPoolSize: 50,
        connectTimeoutMS: 30000, // 连接超时设置为30秒,适配公网连接场景
        // 移除废弃的wtimeoutMS、useNewUrlParser配置,新版MongoDB驱动默认启用对应能力
    }
)
.catch(err => {
    console.error("数据库连接失败:", err.message);
    process.exit(1);
})
.then(async client => {
    app.listen(port, () => {
        console.log(`Server listening on port ${port}`);
    });
});

3. 排查MongoDB连接可用性

如果修改配置后仍报连接错误,逐项检查以下配置:

  • 确认.env文件存放在项目根目录(与index.js同层级),文件内RESTREVIEWS_DB_URI值正确,数据库账号、密码、集群地址无拼写错误,配置值两端不要添加多余的引号
  • 如果使用MongoDB Atlas云集群,进入集群安全配置页面,将当前客户端的公网IP添加到IP白名单,确认连接使用的数据库账号具备目标库的读写权限
  • 临时关闭本地代理、防火墙工具,排除网络拦截导致的连接失败

4. 验证修复结果

重新执行nodemon index.js,配置无误的情况下终端会输出Server listening on port 8000,访问http://localhost:8000/api/v1/restaurants可看到返回的Hello from restaurants.route.js文本,不会再出现应用崩溃提示。

内容的提问来源于stack exchange,提问作者hu234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 07:45:34