使用pm2时如何自动重新加载Node.js项目

How to automatically reload Node.js project when using pm2

我目前正在用 Express.js 编程 Node.js,每次我在文件路由器或应用程序中更改一行代码时,我需要键入命令:

pm2 reload id_project.

如何让 pm2 在文件更改时自动重新加载项目?

默认情况下,pm2 不会在我们每次更改文件时自动刷新我们的服务器。 您需要使用 --watch cli 参数启动您的 pm2 项目,以便告诉 pm2 在文件更改时刷新:

pm2 start id_project --watch

查看 the docs 了解更多详情,或查看更详细的@rogier-spieker 回答。

您需要使用 --watch 选项启动您的 pm2 项目:

pm2 start <script|name|id> --watch

其中<script|name|id>指的是:

  • script the script 你想让 pm2 处理
  • 的路径
  • name配置名称在"ecosystem" file
  • id 指的是已经 运行 使用 pm2 的应用程序,可以使用 pm2 list 获得(请注意,这实际上需要 restart 而不是 start,所以它可能是最不理想的选项)

您还可以指定要忽略的 files/directories:

pm2 start <script> --watch --ignore-watch "node_modules"

Watch & Restart

或者创建一个 "ecosystem" json 文件来描述您希望 pm2 如何处理您的项目:

{
  "name": "project_name",
  "script": "index.js",
  "watch": true,
  "ignore_watch": ["node_modules"]
}

JSON options

PM2 comes with a handy development tool that allow you to start an application and restart it on file change:

# Start your application in development mode
# it print the logs and restart on file change too

# Two way of running your application :
pm2-dev start my-app.js

# or

pm2-dev my-app.js

pm2 是一个 Node 进程管理器,有很多花里胡哨的功能。您可以运行以下命令在检测到目录中的文件更改时自动重启节点应用程序。

pm2 start index.js --watch

请注意,因为 pm2 运行s 东西在后台,你不能 ctrl+c 退出 运行ning pm2 进程。您必须通过传递 ID 或名称来阻止它。

pm2 stop 0
pm2 stop index

另外两个选项如下

npx supervisor index.js
nodemon index.js