Как перезапустить сервер node.js
Я установил и запускаю сервер node.js в osx. Я запустил модуль чата и с удовольствием запускаю его. Я изменил некоторые части и вам нужно перезапустить сервер, чтобы увидеть эффекты.
Я только знаю, как перезапустить, закрыв окно терминала, а затем снова откройте его, а затем запустив node chatdemo.js снова.
Любой способ перезапуска без закрытия терминала?
Спасибо.
Ответы
Ответ 1
Если он просто запущен (а не демон), просто используйте Ctrl-C
.
Если он демоннизирован, вы можете попробовать:
$ ps aux | grep node
you PID 1.5 0.2 44172 8260 pts/2 S 15:25 0:00 node app.js
$ kill -2 PID
Где PID
заменяется номером на выходе ps
.
Ответ 2
Во время разработки лучшим способом перезапуска сервера для просмотра внесенных изменений является использование nodemon
npm install nodemon -g
nodemon [имя вашего приложения]
nodemon будет смотреть файлы в каталоге, в котором запускался nodemon, и если они будут изменены, он автоматически перезапустит ваше приложение node.
Проверьте nodemon git repo: https://github.com/remy/nodemon
Ответ 3
В этом случае вы часто перезагружаете сервер node.js, потому что он находится в активной разработке, и вы постоянно вносите изменения. Существует большая горячая перезагрузка script, которая будет обрабатывать это для вас, просмотрев все ваши .js файлы и перезапустив ваш сервер node.js, если какой-либо из этих файлов изменился. Просто билет для быстрого развития и тестирования.
script и объяснение того, как его использовать, находятся здесь Draco Blue.
Ответ 4
У меня была та же проблема, и я написал эту оболочку script, которая убивает все существующие процессы node:
#!/bin/bash
echo "The following node processes were found:"
ps aux | grep " node " | grep -v grep
nodepids=$(ps aux | grep " node " | grep -v grep | cut -c10-15)
echo "OK, so we will stop these process/es now..."
for nodepid in ${nodepids[@]}
do
echo "Stopping PID :"$nodepid
kill -9 $nodepid
done
echo "Done"
После этого в качестве файла оболочки script (xxx.sh) вы можете добавить его в свой PATH, как описано here.
(Обратите внимание, что это уничтожит все процессы с "node" в нем, кроме grep own, поэтому я предполагаю, что в некоторых случаях он может также убивать некоторые другие процессы с похожим именем)
Ответ 5
Использование "kill -9 [PID]" или "killall -9 node" работало для меня, где "kill -2 [PID]" не работал.
Ответ 6
Если я просто запускаю приложение node с консоли (не использую вечно и т.д.), я использую control + C, не уверен, что OSX имеет ту же комбинацию клавиш, что и раньше, но намного быстрее, чем поиск идентификатора процесса и его убийство, вы также можете добавить следующий код в приложение чата, которое вы используете, а затем введите "exit" на консоли, когда хотите закрыть приложение.
process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data', function(data) {
if (data == 'exit\n') process.exit();
});
Ответ 7
Я понимаю, что мой комментарий связан с окнами, но может быть кто-то полезен.
Для победы
запустить в cmd:
wmic process where "commandline like '%my_app.js%' AND name='node.exe' " CALL Terminate
вы можете снова запустить приложение:
node my_app.js
Также вы можете использовать его в пакетном файле с кавычками:
wmic process where "commandline like '%%my_app.js%%' AND name='node.exe' " CALL Terminate
node my_app.js
Ответ 8
Сказать "nodemon" ответит на вопрос.
Но о том, как только убить (все) node демон (ы), для меня работает следующее:
pkill -HUP node