环境 : ubuntu 1804 Server

问题

$ pm2 start npm --name apps – start
[PM2] Starting /home/user/.nvm/versions/node/v10.21.0/bin/npm in fork_mode (1 instance)
[PM2] Done.
[PM2][ERROR] Script not found: /home/user/3.0.0/apps/–

清楚记得 nodejs 升级到 15 了 ,这里显示的却是 v10.21.0

升级并设置 node 版本

$ nvm ls

->     v10.21.0
       v15.12.0
        v16.0.0
default -> v10 (-> v10.21.0)
node -> stable (-> v16.0.0) (default)
stable -> 16.0 (-> v16.0.0) (default)
。。。

难怪啊!

$ nvm use 16.0.0
Now using node v16.0.0 (npm v7.10.0)

$ nvm alias default 16.0.0
default -> 16.0.0 (-> v16.0.0)

$ node -v
v16.0.0

pm2 , yarn 又要重装啊!

npm i -g pm2
npm i -g yarn

$ pm2 -v
[PM2] Spawning PM2 daemon with pm2_home=/home/user/.pm2
[PM2] PM2 Successfully daemonized
4.5.6

$ yarn -v
2.4.1

再次 pm2 启动 apps

$ pm2 start npm --name apps – start

>>>> In-memory PM2 is out-of-date, do:
>>>> $ pm2 update
In memory PM2 version: 4.5.0
Local PM2 version: 4.5.6
......

升级 pm2
$ pm2 update

....
>>>>>>>>>> PM2 updated
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 2  │ apps               │ fork     │ 0    │ online    │ 0%       │ 33.0mb   │
│ 3  │ apps               │ fork     │ 0    │ online    │ 0%       │ 34.2mb   │
│ 4  │ apps               │ fork     │ 0    │ online    │ 0%       │ 38.2mb   │
│ 0  │ apps087            │ fork     │ 0    │ online    │ 0%       │ 35.3mb   │
│ 1  │ apps087            │ fork     │ 0    │ online    │ 0%       │ 36.0mb   │

最后,他自动启动了之前失败的所有任务
一个一个 delete ,但是到了最后 2 个,出现奇怪的提示

$ pm2 delete 0

	[PM2] Applying action deleteProcessId on app [0](ids: [ '0' ])
	[PM2] [apps087](0) ✓
	┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
	│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
	└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘
	Current process list running is not in sync with saved list. App apps087 apps087 apps apps apps differs. Type 'pm2 save' to synchronize.
	dhbm@ubuntu1804-136:~/3.0.0/apps$ pm2 status
	┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
	│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
	└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘
	Current process list running is not in sync with saved list. App apps087 apps087 apps apps apps differs. Type 'pm2 save' to synchronize.

干脆重启!

$ sudo reboot

$ pm2 start npm --name apps – start

[PM2] Starting /home/user/.nvm/versions/node/v16.1.0/bin/npm in fork_mode (1 instance)
[PM2] Done.
[PM2][ERROR] Script not found: /home/user/3.0.0/apps/–

还是这个错误啊!

查看官网说明去

https://pm2.keymetrics.io/docs/usage/process-management/

看来发生错误和 fork 模式无关

package.json 中的 start 脚本是这样子的

"start": "yarn clean && cd packages/apps && yarn webpack-cli serve --config webpack.serve.cjs --port 9948",

所以,直接使用 pm2 start 是不行的
$ pm2 start

[PM2][ERROR] File ecosystem.config.js not found

因为只运行着一个 app ,也懒得专门去配置一个 pm2.conf.json

那就逐步测试 pm2 yarn 运行,总会蒙对的!(惭愧!)
$ pm2 start yarn --start

error: unknown option `--start'

–start 用空格隔开就可以了!

$ pm2 start yarn – start

names 是 yarn , 我想要他叫做 apps

$ pm2 start yarn --name apps – start

Current process list running is not in sync with saved list. App apps differs. Type 'pm2 save' to synchronize.

他要求 pm2 save

最终命令是

$ pm2 start yarn --name apps – start && pm2 save

yarn 换成 npm 也是可以的

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐