搭建MERN栈应用遭遇ERR_MODULE_NOT_FOUND模块未找到错误
解决MERN栈中ERR_MODULE_NOT_FOUND错误的方案
错误信息
node:internal/errors:496 ErrorCaptureStackTrace(err); ^ Error [ERR_MODULE_NOT_FOUND]: Cannot find module server\controllers\authController.js at new NodeError (node:internal/errors:405:5) at finalizeResolution (node:internal/modules/esm/resolve:224:11) at moduleResolve (node:internal/modules/esm/resolve:836:10) at defaultResolve (node:internal/modules/esm/resolve:1034:11) at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:375:12) at ModuleLoader.resolve (node:internal/modules/esm/loader:344:25) at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:220:38) at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:85:39) at link (node:internal/modules/esm/module_job:84:36) { url: URL {}, code: 'ERR_MODULE_NOT_FOUND' }
排查与解决步骤
核对文件路径准确性
确认导入语句中的server\controllers\authController.js和实际文件位置完全匹配:- 建议在ES模块导入时用
/作为路径分隔符,避免Windows系统下的转义问题 - 检查文件是否真的存在于指定目录,Linux/macOS环境下注意文件名大小写区分
- 相对路径要对应层级,比如用
../向上导航到父目录
- 建议在ES模块导入时用
确认文件扩展名是否完整
如果项目启用ES模块(package.json中设置"type": "module"),导入必须指定完整的.js扩展名:// 正确写法 import authController from './server/controllers/authController.js'; // 错误写法(ES模块不允许省略扩展名) import authController from './server/controllers/authController';统一模块语法规范
- 若用ES模块(package.json含
"type": "module"),全程使用import/export,不能混用require() - 若用CommonJS,全程使用
require(),导入时可省略扩展名,但路径必须准确
- 若用ES模块(package.json含
检查package.json的type配置
查看项目根目录的package.json:- 若存在
"type": "module",所有.js文件按ES模块处理,必须带扩展名导入 - 若不存在,默认按CommonJS处理,此时用
import会触发模块类型不兼容错误
- 若存在
清理缓存重启服务
执行命令清理Node.js模块缓存,再重启服务:node --clear-module-cache npm start
内容的提问来源于stack exchange,提问作者Ali Al-gharib
相关产品推荐
相关产品推荐

