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
相关产品推荐
相关产品推荐

