GoDaddy VPS部署Node.js应用时PM2反复报MODULE_NOT_FOUND错误
GoDaddy VPS部署Node.js应用PM2启动异常问题
问题现象
在GoDaddy的VPS服务器上部署Node.js应用,使用PM2启动后进程显示online状态,但几秒后再次查看状态变为errored;查看日志发现存在MODULE_NOT_FOUND错误及对应的requireStack。
已尝试的解决措施
- 保持Node.js版本一致
- 更新/升级服务器
- 安装并更新Node模块
- 更新PM2
相关命令行输出及日志
PM2启动与状态查询输出
[root@42 Backend]# pm2 start server.js [PM2] Applying action restartProcessId on app [server](ids: [ 0 ]) [PM2] [server](0) ✓ [PM2] Process successfully started ┌────┬───────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├────┼───────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 0 │ server │ default │ 1.0.0 │ fork │ 235064 │ 0s │ 30 │ online │ 0% │ 11.0mb │ root │ disabled │ └────┴───────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘ [root@42 Backend]# pm2 status ┌────┬───────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├────┼───────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 0 │ server │ default │ 1.0.0 │ fork │ 0 │ 0 │ 45 │ errored │ 0% │ 0b │ root │ disabled │ └────┴───────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
PM2日志输出
[root@42 Backend]# pm2 logs [TAILING] Tailing last 15 lines for [all] processes (change the value with --lines option) /root/.pm2/pm2.log last 15 lines: PM2 | 2024-06-28T09:25:33: PM2 log: App [server:0] online PM2 | 2024-06-28T09:25:33: PM2 log: App [server:0] exited with code [1] via signal [SIGINT] PM2 | 2024-06-28T09:25:33: PM2 log: App [server:0] starting in -fork mode- PM2 | 2024-06-28T09:25:33: PM2 log: App [server:0] online PM2 | 2024-06-28T09:25:33: PM2 log: App [server:0] exited with code [1] via signal [SIGINT] PM2 | 2024-06-28T09:25:33: PM2 log: App [server:0] starting in -fork mode- PM2 | 2024-06-28T09:25:33: PM2 log: App [server:0] online PM2 | 2024-06-28T09:25:34: PM2 log: App [server:0] exited with code [1] via signal [SIGINT] PM2 | 2024-06-28T09:25:34: PM2 log: App [server:0] starting in -fork mode- PM2 | 2024-06-28T09:25:34: PM2 log: App [server:0] online PM2 | 2024-06-28T09:25:34: PM2 log: App [server:0] exited with code [1] via signal [SIGINT] PM2 | 2024-06-28T09:25:34: PM2 log: App [server:0] starting in -fork mode- PM2 | 2024-06-28T09:25:34: PM2 log: App [server:0] online PM2 | 2024-06-28T09:25:34: PM2 log: App [server:0] exited with code [1] via signal [SIGINT] PM2 | 2024-06-28T09:25:34: PM2 log: Script /root/ProamWeb/Backend/server.js had too many unstable restarts (16). Stopped. "errored" /root/.pm2/logs/server-out.log last 15 lines: /root/.pm2/logs/server-error.log last 15 lines: 0|server | at Module._extensions..js (node:internal/modules/cjs/loader:1422:10) 0|server | at Module.load (node:internal/modules/cjs/loader:1203:32) 0|server | at Module._load (node:internal/modules/cjs/loader:1019:12) 0|server | at Module.require (node:internal/modules/cjs/loader:1231:19) 0|server | at Hook._require.Module.require (/usr/lib/node_modules/pm2/node_modules/require-in-the-middle/index.js:101:39) { 0|server | code: 'MODULE_NOT_FOUND', 0|server | requireStack: [ 0|server | '/root/ProamWeb/Backend/Controllers/Auth.controller.js', 0|server | '/root/ProamWeb/Backend/Controllers/index.js', 0|server | '/root/ProamWeb/Backend/Routes/Auth.route.js', 0|server | '/root/ProamWeb/Backend/Routes/index.js', 0|server | '/root/ProamWeb/Backend/app.js', 0|server | '/root/ProamWeb/Backend/server.js' 0|server | ] 0|server | }
解决方案
1. 定位缺失模块
从requireStack可知错误触发点在Auth.controller.js,先检查该文件中的所有require语句:
cat /root/ProamWeb/Backend/Controllers/Auth.controller.js | grep "require("
确认引用的第三方模块或本地文件是否存在。
2. 修复引用问题
- 若为第三方模块缺失:进入项目根目录
/root/ProamWeb/Backend/,执行npm install <缺失模块名>,确保安装到项目本地。 - 若为本地文件路径错误:检查
require的相对路径(.//../)是否正确,避免使用绝对路径导致环境不一致。
3. 清理PM2缓存并重启
pm2 delete server pm2 flush pm2 start server.js
4. 验证状态
等待几秒后执行pm2 status查看进程状态,或通过pm2 logs server确认是否还有错误日志。
内容的提问来源于stack exchange,提问作者High Rated Mughal
相关产品推荐
相关产品推荐

