繁体   English   中英

如何正确重启nodemon服务器

[英]How to properly restart nodemon server

当我使用以下命令运行 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 自动完成的相同行为?

谢谢

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

"restart": "touch app.js"

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

下面的代码将达到目的。

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

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

手动重启


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

尝试了一些方法来从正在运行的脚本中重新启动nodemon

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

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

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

sudo lsof -i :4500

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

kill -9 <PID>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM