如何正确重启nodemon服务器

Posted

技术标签:

【中文标题】如何正确重启nodemon服务器【英文标题】:How to properly restart nodemon server 【发布时间】:2018-09-21 03:39:55 【问题描述】:

当我使用以下命令运行 nodejs 服务器时:

"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 脚本“重启”命令中写什么来模拟 nodemon 自动完成的相同行为?

谢谢

【问题讨论】:

在控制台中输入“rs”? 我正在寻找如何在 Nodemon 启动/重启后执行命令/回调,你帮了我很多:) 谢谢! 【参考方案1】:

如documentation 中所述,您可以通过在运行nodemon 的控制台中键入rs 手动重启。 没有外部命令可以触发从其他进程重新启动。 一种解决方法是通过模拟文件更改来触发重新启动。 一个简单的touch 在被监视的文件上就足够了。所以你可以编写一个 npm 脚本来触及其中一个被监视的文件。

"restart": "touch app.js"

【讨论】:

【参考方案2】:

nodemon 的目的是监听文件的变化并重启服务器。如果你想手动重启服务器那么你不需要使用nodemon,你可以使用node命令。

下面的代码可以达到目的。


    "scripts": 
        "start": "node ./src/app.js",
        "restart": "kill -9 $(ps aux | grep '\snode\s' | awk 'print $2') && node ./src/app.js "
    ,

【讨论】:

【参考方案3】:

如果您特别希望在一段时间后解决 “listen EADDRINUSE: address already in use” 错误,您可以检查哪个应用程序正在使用 nodemon 想要使用的端口:

sudo lsof -i :4500

上面将为您提供使用该端口的应用程序的 PID。然后您可以通过以下方式终止该进程:

kill -9 <PID>

【讨论】:

【参考方案4】:

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

手动重启


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

【讨论】:

以上是关于如何正确重启nodemon服务器的主要内容,如果未能解决你的问题,请参考以下文章

Ajax--nodemon自动重启工具安装

“[nodemon] clean exit - 在重启前等待更改”:尝试启动服务器时

nodemon:让node自动重启

Node: Nodemon服务重启工具的详细使用

Nodemon卡在“由于更改而重新启动......”并且不会重新启动服务器

Nodemon 在 Windows Docker 环境中不重启