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

谢谢

documentation 中所述,您可以通过在控制台中键入 rs 手动重新启动,其中 nodemon 为 运行。
没有外部命令可以从不同的进程触发重启。
一种解决方法是通过模拟文件更改来触发重新启动。
一个简单的 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 }') && node ./src/app.js "
    },
}

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

sudo lsof -i :4500

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

kill -9 <PID>

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

Manual restarting


Whilst nodemon is running, if you need to manually restart your application, instead of stopping and restart nodemon, you can type rs with a carriage return, and nodemon will restart your process.