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

Express服务无法启动无报错 遵循MongoDB教程开发REST API服务未运行求助

问题根因排查

  • 核心问题:conn.js中的connectToServer方法未执行传入的回调函数,仅返回了回调函数本身,导致server.js中依赖回调触发的app.listen逻辑永远不会执行,自然不会输出端口启动日志、服务也无法启动。
  • 次要问题1:conn.js重复加载dotenv且未指定配置文件路径,和server.js中指定./config.env的加载逻辑不一致,可能导致MONGOURI环境变量读取失败,MongoDB连接异常。
  • 次要问题2:conn.js中MongoDB连接报错时未将错误传递给回调函数,server.js中的错误处理逻辑无法捕获异常,进程卡住无报错提示。

修复代码

修改conn.js内容如下:

const MongoClient = require('mongodb').MongoClient
// 移除重复的dotenv加载,统一使用server.js中已加载的环境变量
const connectionString = process.env.MONGOURI
let db;

module.exports = {
  connectToServer : function(callback) {
    MongoClient.connect(connectionString, {
        useUnifiedTopology: true
      }, (err, client) => {
        if (err) {
          console.error(err)
          // 将错误传递给回调,触发server.js中的错误处理逻辑
          return callback(err)
        }
    
        db = client.db('db-name'); // 此处db-name替换为你实际的数据库名
        console.log('Connected to Database');
        // 执行回调,触发服务启动逻辑
        return callback(null)
     });
  },

  getDb: function () {
    return db;
  }
}

额外校验项

修改完成后再确认config.env中已配置正确的MONGOURI连接串,重启服务即可看到预期的启动日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:36:03