【发布时间】:2015-06-28 06:58:15
【问题描述】:
我目前正在用Express.js编写Node.js,每次在文件路由器或应用程序中更改一行代码,都需要输入命令:
pm2 reload id_project.
如何让 pm2 在文件更改时自动重新加载项目?
【问题讨论】:
-
pm2 是用于生产模式的工具。看看nodemon.io,它完全符合您的要求。
标签: javascript node.js express pm2
我目前正在用Express.js编写Node.js,每次在文件路由器或应用程序中更改一行代码,都需要输入命令:
pm2 reload id_project.
如何让 pm2 在文件更改时自动重新加载项目?
【问题讨论】:
标签: javascript node.js express pm2
默认情况下,pm2 不会在我们每次更改文件时自动刷新我们的服务器。 您需要使用 --watch cli 参数启动 pm2 项目,以便在文件更改时告诉 pm2 刷新:
pm2 start id_project --watch
查看the docs 了解更多详情,或查看@rogier-spieker 答案,了解更多详情。
【讨论】:
pm2,所以我已经帮不上什么忙了。我只是说了我所说的话,因为它听起来会解决 OP 的问题。尝试查看此线程中的其他答案。也许他们可以帮助你。
您需要使用--watch 选项启动您的pm2 项目:
pm2 start <script|name|id> --watch
<script|name|id> 指的是:
script 要让 pm2 处理的 the script 的路径name"ecosystem" file中的配置名称
id 指的是已经使用 pm2 运行的应用程序,可以使用 pm2 list 获得(请注意,这实际上需要 restart 而不是 start,因此它可能是最不可取的选项)您还可以指定要忽略的文件/目录:
pm2 start <script> --watch --ignore-watch "node_modules"
或创建一个“生态系统”json 文件,描述您希望pm2 如何对待您的项目:
{
"name": "project_name",
"script": "index.js",
"watch": true,
"ignore_watch": ["node_modules"]
}
【讨论】:
pm2 start id_project --watch的id_project是什么?
reload应用程序,它是restarts它
watch 会增加更多内存资源吗?
PM2 带有一个方便的development tool,允许您启动应用程序并在文件更改时重新启动它:
# 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 在后台运行,您不能只是 ctrl+c 退出正在运行的 pm2 进程。您必须通过传递 ID 或名称来阻止它。
pm2 stop 0
pm2 stop index
其他两个选项如下
npx supervisor index.js
nodemon index.js
【讨论】: