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

MERN栈后端运行nodemon server报ERR_MODULE_NOT_FOUND错误

错误产生原因

这个报错是两个问题共同导致的:

  1. 你项目用的是Node.js ESM模块规范,ESM和旧的CommonJS规范不一样,导入本地相对路径模块时必须写完整的文件后缀,不能省略.js。看你restaurants.controller.js里的导入语句写的是import RestaurantsDAO from "../dao/restaurants.DAO";,漏了后缀,Node会直接找无后缀的restaurants.DAO文件,找不到就抛模块不存在的错误。你可以对比下其他文件里的导入,比如index.js里导同一个DAO文件是写了.js后缀的,路由文件导controller也写了后缀,只有这一处漏了。
  2. 你的启动命令写错了。你在backend目录执行nodemon server时,从日志能看到实际执行的是node server index.js,相当于把server.js当入口文件,还多传了index.js参数,但server.js里只定义了express实例和路由,根本没有数据库连接、启动端口监听的逻辑,这部分代码全在index.js里,就算导入问题修了,用这个命令启动服务也跑不起来。
修复方法
  • 先改导入语句:打开backend/api/restaurants.controller.js,把第一行的DAO导入补全后缀,改成:
import RestaurantsDAO from "../dao/restaurants.DAO.js";
  • 再改启动命令:不要执行nodemon server,直接指定正确的入口文件:
nodemon index.js

如果想简化启动操作,可以打开项目的package.json,在scripts字段加启动配置:

"scripts": {
  "dev": "nodemon index.js"
}

之后执行npm run dev就能正常启动服务。

  • 最后做个校验:确认backend/dao文件夹下确实存在restaurants.DAO.js文件,文件名的大小写完全匹配——Linux和macOS系统对文件名大小写敏感,哪怕是大小写差一个字母,都会被识别成不同文件导致找不到模块。

内容的提问来源于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 09:00:57