2015-02-19 7 views
0

Я хочу повторно запустить сервер узла, всякий раз, когда есть изменения в файле, но я хочу использовать fswatch. Я использую fswatch со сценарием оболочки, какNode Restart in Shell Script

nohup node server.js & 

, но я не могу запустить тот же сценарий снова, так как он будет бросать EADDRINUSE.

  • Каким образом можно перезапустить узел с помощью скрипта с помощью функции fswatch (или альтернативной, без какой-либо новой установки)?
  • Почему узел не имеет чего-то вроде перезапуска узла?

что я могу думать о том, что вы получаете pid из ps и убиваете его скриптом, но я думаю, что должно быть лучшее решение.

+1

Мне нравится навсегда, https: //www.npmjs. ком/пакет/навсегда. Я понимаю, что это, вероятно, будет считаться новой установкой, но все равно стоит заглянуть в нее, может помочь другим. –

+0

будет '' nodemon server, js'' служить вашей цели? –

+0

Возможно, вы захотите заглянуть в узел-супервизор: https://github.com/isaacs/node-supervisor – Ben

ответ

0

Я могу сделать это с помощью fswatch.

fswatch -o mydir | xargs -n1 -I{} ps | grep '[n]ode server.js$' | awk '{system("kill "$1)}' 

или поместив тот же код в отдельный файл оболочки. и использовать его в качестве

xargs -n1 './location-of-shell-file.sh' 

когда я запустить Grep, этот процесс также входит в пс, так, чтобы исключить, что я должен был использовать

grep '[n]ode server.js' 
-2

EADDRINUSE приходит из-за того, что вы уже привязаны к одному порту. Node.js не имеет встроенной механики перезапуска, поэтому да, вы должны использовать некоторые сценарии bash (или фреймворки) для хорошего перезапуска фонового приложения.