如何正确重启 nodemon 服务器

9
当我使用以下命令运行一个Node.js服务器时:
"start": "nodemon --max-old-space=8192 ./src/app.js --exec babel-node"

当我在代码中做出任何更改时,nodemon会自动重新加载代码并重新启动服务器,并显示以下信息。
[nodemon] restarting due to changes...
[nodemon] starting `babel-node --max-old-space=8192 ./src/app.js`

我该如何手动重启服务器?

换句话说,我应该在package.json脚本的"restart"命令中写什么来模拟nodemon自动执行的相同行为?

谢谢。


4
在控制台中输入“rs”? - Elad
我一直在寻找如何在Nodemon启动/重启后执行命令/回调,你帮了我很多:)谢谢! - Vinicius
6个回答

12
根据文档所述,在运行nodemon的控制台中键入rs即可手动重启。
没有外部命令可以从不同进程触发重启。
一种解决方法是通过模拟文件更改来触发重启。
对监视的文件执行简单的touch操作就足够了。因此,您可以编写一个npm脚本来触发其中一个被监控的文件的touch操作。
"restart": "touch app.js"

5
nodemon 的目的是监听文件的更改并重新启动服务器。如果您想手动重新启动服务器,则无需使用 nodemon,只需使用 node 命令即可。
以下代码可以实现此目的。
{
    "scripts": {
        "start": "node ./src/app.js",
        "restart": "kill -9 $(ps aux | grep '\snode\s' | awk '{print $2}') && node ./src/app.js "
    },
}

2

告别 nodemon

Node v18.11.0

使用 node --watch'watch'模式下运行,当导入的文件发生更改时会重新启动进程。

试一下以下方法:

node --watch app.js

更多信息

(此链接为英文原文,可点击查看)

1

我尝试了几种方法在运行脚本时重新启动 nodemon

var fs = require('fs');
fs.utimesSync(__filename, Date.now(), Date.now());

这将触及当前文件,如果nodemon正在监视,则应触发重启。

我喜欢这个修复程序,简单易用 :) - asciidude

-1
如果您特别想解决“listen EADDRINUSE: address already in use”错误,您可以检查哪个应用程序正在使用nodemon想要使用的端口:
sudo lsof -i :4500

以上命令将会给出使用该端口的应用程序的PID。然后,您可以通过以下方式终止该进程:
kill -9 <PID>

-1

来源: https://www.npmjs.com/package/nodemon

手动重启


当nodemon正在运行时,如果您需要手动重启应用程序, 而不是停止和重新启动nodemon,则可以输入rs并带有回车符号,nodemon将重新启动您的进程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接