Nodemon运行后端时MongoDB连接被拒且用户路由报Cannot GET错误
问题根因与解决步骤
1. MongoDB连接被拒的核心原因
所有抛出的connect ECONNREFUSED 127.0.0.1:27017报错,不管来自后端服务还是Mongo Compass,本质都是本地没有运行处于27017端口监听状态的MongoDB服务。
MongoDB默认监听端口固定为27017,连接被拒代表该端口上没有可连通的数据库服务进程。
- 对应解决操作:
- 检查本地MongoDB安装状态,未安装则先完成本地部署
- 启动MongoDB系统服务,确认服务正常监听27017端口
- 优化mongoose连接逻辑的异常捕获:现有代码中
mongoose.connect返回的Promise没有绑定异常监听,只要连接环节出错就会触发未处理Promise警告,可在连接初始化后绑定error事件监听器,直接输出连接异常的具体日志,避免无意义的弃用警告刷屏
2. 路由访问报Cannot GET的原因
- 访问
/api/users/根路径返回Cannot GET是符合代码逻辑的正常现象:
代码已将userRouter挂载到/api/users路径下,但userRouter内部仅定义了/seed子路径的GET接口,没有定义匹配/api/users根路径的处理函数,Express匹配不到对应路由时,就会默认返回Cannot GET提示。 - 产品路由可正常访问的原因:
所有产品相关接口完全没有依赖MongoDB连接,数据全部从本地静态的data.js文件读取,哪怕数据库完全不可用,这部分接口也能正常返回静态数据,和依赖数据库能力的用户路由形成了明显反差。 - 排除数据库未启动的问题后,若仍出现访问
/api/users/seed报404的情况,可检查userRouter的导入路径是否和实际文件位置匹配,确认路由挂载逻辑正确。等MongoDB服务正常启动后,访问/api/users/seed路径即可正常执行用户种子数据写入逻辑。
内容的提问来源于stack exchange,提问作者JayTLo
相关产品推荐
相关产品推荐

