通过pm2启动的服务失败,用node启动服务成功问题定位解决

发布于:2024-07-10 ⋅ 阅读:(122) ⋅ 点赞:(0)

通过pm2 start server_erp.js --node-args='--harmony'npm restart启动的服务如下:

pm2 start server_erp.js --node-args='--harmony'
[PM2] Applying action restartProcessId on app [server_erp](ids: [ 0 ])
[PM2] [server_erp](0)[PM2] Process successfully started
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0  │ server_erp         │ fork     │ 45   │ online    │ 0%7.1mb    │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘

实际超找端口号查不到:

[root@izbp1e127kbk1pzti4r1o5z ~]# netstat -tulnp | grep "6050"

但是通过[root@izbp1e127kbk1pzti4r1o5z project]# node server_erp.js可以查到端口号。
当然查不到接口就不通,查到接口就正常。
通过pm2带日志开启:

[root@izbp1e127kbk1pzti4r1o5z project]# pm2 logs server_erp
[TAILING] Tailing last 15 lines for [server_erp] process (change the value with --lines option)
/root/.pm2/logs/server-erp-out.log last 15 lines:
/root/.pm2/logs/server-erp-error.log last 15 lines:
0|server_e |   code: 'MODULE_NOT_FOUND',
0|server_e |   requireStack: []
0|server_e | }
0|server_e | node:internal/modules/cjs/loader:1031
0|server_e |   throw err;
0|server_e |   ^
0|server_e | 
0|server_e | Error: Cannot find module '/root/nvm/versions/node/v4.8.4/lib/node_modules/pm2/lib/ProcessContainerFork.js'
0|server_e |     at Function.Module._resolveFilename (node:internal/modules/cjs/loader:1028:15)
0|server_e |     at Function.Module._load (node:internal/modules/cjs/loader:873:27)
0|server_e |     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
0|server_e |     at node:internal/main/run_main_module:22:47 {
0|server_e |   code: 'MODULE_NOT_FOUND',
0|server_e |   requireStack: []
0|server_e | }

经过分析是因为node是本地按转的不在/root/nvm/versions/node/v4.8.4/目录下。
解决办法:
查找该文件的实际路径:

[root@izbp1e127kbk1pzti4r1o5z project]# sudo find / -name "ProcessContainerFork.js"
/opt/node-v16.20.2-linux-x64/lib/node_modules/pm2/lib/ProcessContainerFork.js

建立软链接:

[root@izbp1e127kbk1pzti4r1o5z v4.8.4]# ln -s /opt/node-v16.20.2-linux-x64/lib /root/nvm/versions/node/v4.8.4/lib
[root@izbp1e127kbk1pzti4r1o5z v4.8.4]# ls
bin  lib

重启服务:

[root@izbp1e127kbk1pzti4r1o5z project]# npm restart

> office-rent@1.0.0 restart
> pm2 restart all

Use --update-env to update environment variables
[PM2] Applying action restartProcessId on app [all](ids: [ 0 ])
[PM2] [server_erp](0) ✓
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0  │ server_erp         │ fork     │ 105  │ online    │ 0%4.3mb    │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘

查询端口正常:

[root@izbp1e127kbk1pzti4r1o5z ~]# netstat -tulnp | grep "6050"
tcp6       0      0 :::6050                 :::*                    LISTEN      11592/node   

网站公告

今日签到

点亮在社区的每一天
去签到