Я установил и запустил сервер node.js на osx. Я запустил модуль чата и успешно его использую. Я изменил некоторые элементы, и мне нужно перезапустить сервер, чтобы увидеть эффекты.
Я знаю только, как перезапустить, закрыв окно терминала, а затем снова его подключив, а затем снова запустив node chatdemo.js.
Любой способ перезапустить без закрытия терминала?
Благодарю.
forever restart
Ответы:
Если он просто запущен (а не демон), просто используйте
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
.источник
nohup node server.js &
Во время разработки лучший способ перезапустить сервер, чтобы увидеть сделанные изменения, - это использовать nodemon.
nodemon будет следить за файлами в каталоге, в котором был запущен nodemon, и если они изменятся, он автоматически перезапустит ваше приложение node.
Проверьте репозиторий nodemon git: https://github.com/remy/nodemon
источник
В этом случае вы часто перезагружаете сервер node.js, потому что он находится в активной разработке, и вы все время вносите изменения. Существует отличный сценарий горячей перезагрузки , который справится с этим за вас, просмотрев все ваши файлы .js и перезапустив сервер node.js, если какой-либо из этих файлов изменился. Просто билет для быстрой разработки и тестирования.
Сценарий и объяснение того, как его использовать, можно найти здесь, в Draco Blue .
источник
У меня была та же проблема, и я написал этот сценарий оболочки, который убивает все существующие процессы узла:
#!/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"
После сохранения в виде файла сценария оболочки (xxx.sh) вы можете добавить его в свой PATH, как описано здесь .
(Обратите внимание, что это убьет все процессы с "node" в его имени, кроме собственного grep, поэтому я предполагаю, что в некоторых случаях он также может убить некоторые другие процессы с аналогичным именем)
источник
cut -c17-20
pkill node
, для чего?Сказать «nodemon» - значит ответить на вопрос.
Но о том, как убить (всех) демона (ов) узла, у меня работает следующее:
источник
Я понимаю, что мой комментарий касается окон, но может быть кому-то полезен. Для выигрыша запустите cmd:
wmic process where "commandline like '%my_app.js%' AND name='node.exe' " CALL Terminate
тогда вы можете снова запустить приложение:
Также вы можете использовать его в пакетном файле с escape-кавычками:
wmic process where "commandline like '%%my_app.js%%' AND name='node.exe' " CALL Terminate node my_app.js
источник
Если я просто запускаю приложение узла с консоли (не использую навсегда и т. Д.), Я использую control + C, не уверен, что OSX имеет ту же комбинацию клавиш для завершения, но намного быстрее, чем найти идентификатор процесса и убить его, вы также можете добавить следующий код для приложения чата, которое вы используете, а затем введите «exit» в консоли, когда захотите закрыть приложение.
process.stdin.resume(); process.stdin.setEncoding('utf8'); process.stdin.on('data', function(data) { if (data == 'exit\n') process.exit(); });
источник
Использование «kill -9 [PID]» или «killall -9 node» сработало для меня, когда «kill -2 [PID]» не сработало.
источник
kill -9
. Это не позволяет полностью завершить процесс, оставит дескрипторы «осиротевшими» и, как правило, ненужными. Ванильkill
, а если нет,kill -INT
то хватит. Не ходите,kill -9
если это действительно не нужно, а в большинстве случаев это не так.Сначала откройте терминал / командную строку, затем перейдите в каталог вашего проекта, теперь установите nodemon с помощью команды npm install nodemon --save-dev, эта команда гарантирует, что он сохранен как зависимость разработчика. Если вы работаете с expressjs, то в вашем файле пакета это будет выглядеть так:
{ "name": "expressjs-app", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "cookie-parser": "~1.4.4", "debug": "~2.6.9", "express": "~4.16.1", "http-errors": "~1.6.3", "morgan": "~1.9.1", "pug": "^2.0.4" }, "devDependencies": { "nodemon": "^2.0.3" } }
теперь измените значение «start» в файле package.json, для производства мы будем использовать значение exsiting, но для разработки будем использовать nodemon для отслеживания изменений в исходном файле без перезапуска сервера. Там для нового значения для начала будет "start": "if [[$ NODE_ENV == 'production']]; then node ./bin/www; else nodemon ./bin/www; fi"
окончательный файл package.json будет выглядеть так
{ "name": "expressjs-app", "version": "0.0.0", "private": true, "scripts": { "start": "if [[$NODE_ENV=='production']]; then node ./bin/www; else nodemon ./bin/www; fi" }, "dependencies": { "cookie-parser": "~1.4.4", "debug": "~2.6.9", "express": "~4.16.1", "http-errors": "~1.6.3", "morgan": "~1.9.1", "pug": "^2.0.4" }, "devDependencies": { "nodemon": "^2.0.3" } }
чтобы удалить nodemon, просто запустите команду npm uninstall nodemon
источник