使用cPanel应用管理器部署Nestjs应用遇模块找不到错误求助
排查步骤:NestJS部署cPanel子域名时的模块找不到错误
错误提示的路径/home/public_html/mySubDomain/dist/src/main.js明显缺失了用户名myUserName,这是核心线索,按以下步骤逐一排查:
检查Apache配置文件的路径完整性
打开/etc/apache2/conf.d/userdata/ssl/2_4/myUserName/mySubDomain/appName.conf,确认配置里的应用路径是否包含完整的用户目录前缀:- 如果用Passenger部署,确认
PassengerAppRoot的值是/home/myUserName/public_html/mySubDomain,PassengerStartupFile是dist/src/main.js - 如果用反向代理,确认Node进程的启动命令使用了绝对路径
/home/myUserName/public_html/mySubDomain/dist/src/main.js,而非相对路径
- 如果用Passenger部署,确认
验证编译后文件的存在性
登录服务器执行命令:ls -l /home/myUserName/public_html/mySubDomain/dist/src/如果
main.js不存在,回到项目根目录/home/myUserName/public_html/mySubDomain/重新执行npm run build,确保编译过程无报错,成功生成dist目录。确认启动命令的工作目录
若使用PM2或直接启动Node进程:- 若用相对路径启动(
node dist/src/main.js),必须在/home/myUserName/public_html/mySubDomain/目录下执行 - 更稳妥的方式是使用绝对路径启动:
node /home/myUserName/public_html/mySubDomain/dist/src/main.js
- 若用相对路径启动(
检查文件权限
确保Apache/Node进程能读取dist目录下的文件,执行权限修复命令:chmod -R 755 /home/myUserName/public_html/mySubDomain/dist/ chown -R myUserName:myUserName /home/myUserName/public_html/mySubDomain/dist/(注:
myUserName替换为你的实际cPanel用户名,用户组若为nobody则对应调整)核对cPanel子域名的文档根目录
登录cPanel进入「子域名」管理页面,确认该子域名的文档根目录设置为/home/myUserName/public_html/mySubDomain,避免因根目录配置错误导致路径解析偏差。
内容的提问来源于stack exchange,提问作者Abhimanyu Patil
相关产品推荐
相关产品推荐

