如何正确重启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服务器的主要内容,如果未能解决你的问题,请参考以下文章
“[nodemon] clean exit - 在重启前等待更改”:尝试启动服务器时