Express.js项目启动报错:Cannot find module '../controllers/userController'
解决Express.js中"Cannot find module '../controllers/userController'"错误
以下是针对该问题的排查和解决步骤:
1. 检查文件真实扩展名
Windows默认会隐藏已知文件类型的扩展名,可能你的userController.js实际是userController.js.txt(后缀被隐藏):
- 打开文件资源管理器,点击「查看」选项卡,勾选「文件扩展名」
- 确认
controllers文件夹下的文件确实是userController.js,无多余后缀
2. 验证文件名大小写一致性
虽然Windows文件系统不区分大小写,但Node.js的模块解析在部分场景(如使用WSL、Git大小写敏感配置)下会严格区分:
- 确认
userRoutes.js中require('../controllers/userController')的文件名大小写,和实际文件userController.js完全一致(比如有没有写成UserController.js)
3. 确认启动服务器的工作目录
如果启动服务器时的工作目录不正确,相对路径解析会出错:
- 正确的工作目录应为
server文件夹(包含package.json和src的目录) - 建议在
package.json中添加启动脚本:"scripts": { "start": "node src/app.js" } - 然后在
server目录下运行npm start,避免手动指定路径时的工作目录问题
4. 检查文件读取权限
极少数情况下,文件权限不足会导致Node.js无法加载模块:
- 右键
userController.js,选择「属性」→「安全」 - 确保当前运行Node.js的用户拥有该文件的读取权限
5. 清除Node.js模块缓存
Node.js可能缓存了错误的模块解析结果,尝试:
- 关闭当前终端,重新打开后启动服务器
- 若使用了
nodemon等工具,重启nodemon进程
内容的提问来源于stack exchange,提问作者furb
相关产品推荐
相关产品推荐

