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]
相关推荐
deming_su9 分钟前
第八课:性能优化与高并发处理方案
nginx·性能优化·node.js
嘉琪coder1 小时前
显示器报废,win笔记本远程连接mac mini4 3种方法实测
前端·windows·mac
入门级前端开发4 小时前
npm install 报错ERESOLVE
前端·npm·node.js
爱宇阳6 小时前
如何在 Windows 10 启用卓越性能模式及不同电源计划对比
windows·卓越模式·电池选项
Tomorrow'sThinker7 小时前
Python零基础学习第三天:函数与数据结构
开发语言·windows·python
OpenTiny社区8 小时前
Node.js 技术原理分析系列 4—— 使用 Chrome DevTools 分析 Node.js 性能问题
前端·开源·node.js·opentiny
huangfuyk8 小时前
使用Node.js从零搭建DeepSeek本地部署(Express框架、Ollama)
node.js·express·ollama·deepseek
蜡笔小新..9 小时前
Windows下配置Flutter移动开发环境以及AndroidStudio安装和模拟机配置
windows·flutter
程序漫游人9 小时前
关闭Windows安全中心,解析与实操指南
windows·安全
华洛12 小时前
老板要求接入DeepSeek,哪家提供的服务强?
前端·javascript·node.js