Node.js Shell脚本中的节点重启

Node.js Shell脚本中的节点重启,node.js,macos,fswatch,Node.js,Macos,Fswatch,我想在文件发生更改时重新运行节点服务器,但我想使用fswatch。我正在使用fswatch和shell脚本,如 nohup node server.js & 但是我不能再次运行相同的脚本,因为它将抛出EADDRINUSE 在fswatch的帮助下,通过脚本重新启动节点的最佳方式是什么(或替代方式,无需任何新安装) 为什么node没有类似node restart的功能 我能想到的是从ps获取pid并用脚本杀死它,但我想应该有更好的解决方案。EADDRINUSE的出现是因为您已经绑定到

我想在文件发生更改时重新运行节点服务器,但我想使用fswatch。我正在使用fswatch和shell脚本,如

nohup node server.js &
但是我不能再次运行相同的脚本,因为它将抛出EADDRINUSE

  • 在fswatch的帮助下,通过脚本重新启动节点的最佳方式是什么(或替代方式,无需任何新安装)
  • 为什么node没有类似node restart的功能

我能想到的是从ps获取pid并用脚本杀死它,但我想应该有更好的解决方案。

EADDRINUSE的出现是因为您已经绑定到同一个端口。Node.js没有内置的重启机制,所以是的,你应该使用一些bash脚本(或框架)来很好地重启后台应用程序

在fswatch的帮助下,我可以做到这一点

fswatch -o mydir | xargs -n1 -I{}  ps | grep '[n]ode server.js$' | awk '{system("kill "$1)}'
或者将相同的代码放在单独的shell文件中。并将其用作

xargs -n1 './location-of-shell-file.sh'
当我运行grep时,这个过程也包含在ps中,所以为了排除我不得不使用的

grep '[n]ode server.js'

我喜欢永远。我意识到这可能算是新安装,但仍然值得研究,可能对其他人有帮助。
nodemon server,js
能满足您的需要吗?您可能需要研究node supervisor: