Windows用pm2部署node.js项目

Windows上pm2启动命令不生效

按照常规启动命令应该如下,但是发现不生效

shell 复制代码
pm2 start npm --name "project-name" -- start

具体如下,可以看到状态都是stopped

shell 复制代码
$ pm2 start npm --name "chatgpt-next-web" -- start
[PM2] Starting F:\PROGRAMFILES\NODEJS\NPM.CMD in fork_mode (1 instance)
[PM2] Done.
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0  │ chatgpt-next-web   │ fork     │ 8    │ stopped   │ 0%       │ 0b       │
│ 1  │ chatgpt-next-web   │ fork     │ 1    │ stopped   │ 0%       │ 0b       │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘

后面参考了这篇文章:https://pm2.fenxianglu.cn/docs/start#启动-npmyarnpnpm-应用 的方法才生效,猜测是Windows和Linux环境的差异导致的。

启动 npm/yarn/pnpm 应用

npm 为例:

shell 复制代码
$ pm2 start -n demo npm -- run dev

警告:上面这种方式仅适用到 linux 系统,window 系统无效且报错

不过 window 系统可以这样

项目根目录创建 ecosystem.config.js 配置:

js 复制代码
module.exports = {
  apps: [
    {
      name: "demo",
      cwd: "./",
      script:
        "C:\\Users\\zhangsan\\AppData\\Roaming\\nvm\\v16.16.0\\node_modules\\npm\\bin\\npm-cli.js", // npm-cli.js路径
      args: "run dev",
    },
  ],
};

项目根目录执行命令:

shell 复制代码
$ pm2 start

另一种方式,不适应所有版本,了解下即可:

项目根目录创建 launch.js 内容:

js 复制代码
const exec = require("child_process").exec;
exec("npm run dev", { windowsHide: true });

启动

shell 复制代码
$ pm2 start ./launch.js

测试使用 ecosystem.config.js 配置启动

1.同上,项目根目录创建 ecosystem.config.js,并修改实际路径;

2.运行 pm2 start

shell 复制代码
$ pm2 start
[PM2] Applying action restartProcessId on app [chatgpt-next-web](ids: [ 0, 1 ])
[PM2] [chatgpt-next-web](0) ✓
[PM2] [chatgpt-next-web](1) ✓
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0  │ chatgpt-next-web   │ fork     │ 8    │ online    │ 0%       │ 44.0mb   │
│ 1  │ chatgpt-next-web   │ fork     │ 16   │ stopped   │ 0%       │ 0b       │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘

可以看到有一个状态已经变成online 了。

ps:需要注意 ,用这种会弹cmd窗口,一开始会弹好几次,最后只剩下一个还是两个,如果你把他们都关掉,它立刻又会弹出来一个,感觉有点像是守护进程,那个窗口偶尔能看到 next-router-worker 为标题。

扩展:pm2常用命令

shell 复制代码
# 启动应用
pm2 start
# 停止某个应用
pm2 stop name
# 删除某个应用
pm2 delete name
# 查看应用列表
pm2 list
# 查看各应用状态
pm2 status
# 查看日志,可指定应用
pm2 log [name]
相关推荐
来一杯龙舌兰2 小时前
【Jboss/Windows】Tomcat 8 + JDK 8 升级为 Jboss eap 7 + JDK8
java·windows·tomcat·jboss·jboss升级·tomcat迁移
我是苏苏3 小时前
C#高级:递归4-根据一颗树递归生成数据列表
windows·microsoft·c#
小参宿5 小时前
高效绘图不再受限!本地搭建Excalidraw与随时随地高效绘制流程图教程
运维·服务器·windows·docker·centos·流程图
CodeChampion5 小时前
68.基于SpringBoot + Vue实现的前后端分离-心灵治愈交流平台系统(项目 + 论文PPT)
java·vue.js·spring boot·mysql·elementui·node.js·idea
AitTech8 小时前
C#实现集合分页功能详解:从基础到实践
windows·microsoft·c#
LLLuckyGirl~8 小时前
node.js内置模块之---crypto 模块
node.js
pumpkin845149 小时前
Windows上使用VSCode开发linux C++程序
linux·windows·vscode
LLLuckyGirl~1 天前
node.js版本管理之---npm 和 package.json
node.js
qq_458563811 天前
npm发布自定义包
前端·npm·node.js