Ubuntu环境运行Express报MODULE_NOT_FOUND错误,Windows下正常
Ubuntu下Express项目模块找不到的解决方案
针对你遇到的「Windows正常运行、Ubuntu报错找不到./src/controllers/auth/passport模块」问题,以下是排查和解决方向:
1. 检查文件名大小写
Linux文件系统区分大小写,Windows则不。如果代码中引用的路径是./src/controllers/auth/passport,但实际文件/文件夹名是大写(比如Passport.js、Auth),就会导致找不到模块。
- 操作:进入对应目录
/var/www/PTI/Projeto/code/server/src/controllers/auth/,用ls命令查看文件名,确保和require路径的大小写完全一致。
2. 确认文件权限
Ubuntu下运行Node的用户可能没有目标文件的读取权限。
- 操作:
- 查看文件权限:
ls -l /var/www/PTI/Projeto/code/server/src/controllers/auth/passport.js(替换为实际文件名) - 若权限不足,赋予读取权限:
sudo chmod +r /var/www/PTI/Projeto/code/server/src/controllers/auth/passport.js - 也可递归设置整个src文件夹权限:
sudo chmod -R 755 /var/www/PTI/Projeto/code/server/src/
- 查看文件权限:
3. 验证相对路径基准
虽然你说main.js和src同目录,但需确认Node.js解析路径的基准是否正确:
- 操作:
- 找到main.js的绝对路径:
find /var/www/PTI/Projeto -name main.js - 进入该目录,执行
ls src,确认src文件夹确实存在 - 若server.js是入口文件,且main.js是被server.js引入的,main.js中的
./src是相对于自身所在目录,而非server.js的目录,这点无需调整,只需确保main.js和src同目录即可。
- 找到main.js的绝对路径:
4. 重置依赖缓存
Node.js或npm的缓存可能导致模块解析异常,重置依赖后重试:
- 操作:
- 进入项目根目录:
cd /var/www/PTI/Projeto/code/server/ - 删除依赖和锁文件:
rm -rf node_modules package-lock.json - 重新安装依赖:
npm install - 重启项目
- 进入项目根目录:
内容的提问来源于stack exchange,提问作者Bernardo Rebelo
相关产品推荐
相关产品推荐

