使用nodemon运行server.js无报错无成功提示,卡在clean exit状态如何解决
问题原因及解决方法
根因定位
- 启动文件错误:你执行的启动命令是
nodemon server.js,但项目中负责数据库连接、调用app.listen启动端口监听的逻辑全部写在index.js中。server.js仅导出了express实例,没有启动服务的逻辑,文件执行完所有代码后就会直接正常退出,所以nodemon会输出clean exit - waiting for changes before restart,不会有服务启动成功的日志。 - 代码拼写错误:就算后续启动
index.js,现有代码也存在两处拼写问题会导致异常:- MongoDB连接参数写错:
useNewUrlParse应为useNewUrlParser,参数不生效会导致数据库连接失败 - 错误日志打印写错:
err.stakc应为err.stack,连接出错时无法正常打印错误栈排查问题
- MongoDB连接参数写错:
- MongoDB Atlas连接配置异常:如果启动正确文件后仍无响应,大概率是MongoDB云数据库的连接配置有问题:
- Atlas的IP白名单未添加你当前设备的公网IP
.env文件中的RESTREVIEW_DB_URI连接串配置错误,账号、密码、集群地址、数据库名存在未替换的占位符.env文件未放在项目根目录,环境变量读取失败
解决步骤
- 第一步:替换启动命令,启动正确的入口文件:
nodemon index.js - 第二步:修正
index.js中的两处拼写错误:// 修正连接参数 MongoClient.connect( process.env.RESTREVIEW_DB_URI, { maxPoolSize: 50, wtimeoutMS: 2500, useNewUrlParser: true // 这里修正拼写 } ) .catch(err => { console.log(err.stack) // 这里修正拼写 process.exit(1) }) - 第三步:检查MongoDB Atlas配置:
- 登录Atlas控制台,进入「Network Access」页面,确认当前设备公网IP已加入白名单,测试阶段可临时设置为
0.0.0.0/0验证连通性 - 确认项目根目录存在
.env文件,RESTREVIEW_DB_URI连接串中的账号、密码、集群地址均替换为你自己的实际配置,没有保留官方占位符
- 登录Atlas控制台,进入「Network Access」页面,确认当前设备公网IP已加入白名单,测试阶段可临时设置为
- 第四步:验证服务启动,正常情况下终端会输出
Listening on port 8000的日志,访问http://localhost:8000/api/v1/restuarants可看到返回Hello World
内容的提问来源于stack exchange,提问作者Syed mujahid Iqbal
相关产品推荐
相关产品推荐

