Прекратить работу node.js

Я читаю отличную онлайн-книгу http://nodebeginner.org/ и пробую простой код

var http = require("http"); function onRequest(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); } http.createServer(onRequest).listen(8888); 

Теперь я не знал (и я до сих пор не знаю!), Как изящно закрыть node.js, поэтому я просто пошел ctrl+z . Теперь каждый раз, когда я пытаюсь запустить node server.js я получаю следующие сообщения об ошибках.

 node.js:134 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: EADDRINUSE, Address already in use at Server._doListen (net.js:1100:5) at net.js:1071:14 at Object.lookup (dns.js:153:45) at Server.listen (net.js:1065:20) at Object. (/Users/Bob/server.js:7:4) at Module._compile (module.js:402:26) at Object..js (module.js:408:10) at Module.load (module.js:334:31) at Function._load (module.js:293:12) at Array. (module.js:421:10) 

Итак, два вопроса:

1) Как изящно закрыть node.js?

2) Как восстановить беспорядок, который я создал?

  1. Используйте Ctrl + C, чтобы закончить процесс узла

  2. Очистка беспорядка зависит от вашей платформы, но в основном вам нужно найти остатки процесса, в котором работает узел, и убить его.

    Например, в Unix: ps -ax | grep node ps -ax | grep node даст вам запись типа:

     1039 ttys000 0:00.11 node index.js 

    где index.js – это имя вашего файла узла.

    В этом примере 1039 – это идентификатор процесса (ваш будет другим), поэтому kill -9 1039 закончит его, и вы сможете снова привязать его к порту.

В настоящее время я использую систему событий Node для ответа на сигналы. Вот как я использую сигнал Ctrl-C (SIGINT) в программе:

 process.on( 'SIGINT', function() { console.log( "\nGracefully shutting down from SIGINT (Ctrl-C)" ); // some other closing procedures go here process.exit( ); }) 

Вы получали ошибку «Адрес в использовании», потому что Ctrl-Z не убивает программу; он просто приостанавливает процесс в UNIX-подобной операционной системе, и программа узла, которую вы разместили в фоновом режиме, все еще привязана к этому порту.

В Unix-подобных системах [Control + Z] является наиболее распространенным стандартным отображением клавиатуры для последовательности клавиш, которая приостанавливает процесс (SIGTSTP). [3] При вводе пользователем на своем компьютерном терминале в текущий выполняемый процесс переднего плана отправляется сигнал SIGTSTP, что обычно приводит к приостановке процесса. Затем пользователь может продолжить выполнение процесса, набрав команду «fg» (сокращение от переднего плана) или набрав «bg» (сокращение от фона) и, кроме того, набрав команду «disown», чтобы отделить фоновый процесс от терминала. 1

Вам нужно будет убить ваши процессы, выполнив kill или «killall -9 node» или тому подобное.

Поскольку node.js является управляемой событиями средой выполнения, наиболее изящным выходом является выключение очереди ожидающих событий. Когда очередь событий пуста, процесс завершится. Вы можете гарантировать, что очередь событий разряжена, выполняя такие действия, как очистка заданных интервалов времени и закрытие любых серверов с помощью открытых соединений сокетов. Это становится сложнее при использовании сторонних модhive, потому что вы во власти того, что автор модуля позаботился о том, чтобы изящно уничтожить ожидающие события, которые он создал. Это может быть не самый практичный способ выхода из процесса node.js, поскольку вы будете тратить много усилий на отслеживание «пропущенных» ожидающих событий, но это самый изящный, я думаю.

Введите либо

 process.exit() 

или

 .exit 

чтобы изящно выйти из node .

Контроль удара + C дважды заставит выйти.

1) Как изящно закрыть node.js?

Прослушивание сигнала SIGINT. В Windows вам нужно прослушать ctrl-c с модулем readline.

Я написал свое собственное решение, чтобы обеспечить приложение грациозным отключением и использованием доменов: изящество . Стоит посмотреть.

  • Что случилось с расшифровкой шифрования nodejs?
  • Как заставить SSL / https в Express.js
  • Расширить объект Express Request с помощью TypScript
  • Какую библиотеку websocket использовать с Node.js?
  • Как реализовать много-много ассоциаций в sequelize
  • Node.js - Mongoose - проверьте, существует ли коллекция
  • Почему Node.js однопоточный?
  • Array.push () делает все элементы одинаковыми при нажатии объекта
  • Сценарий и аргументы оболочки Node.js
  • Как сделать внешние HTTP-запросы с помощью Node.js
  • ExpressJS: как перенаправить запрос POST с параметрами
  • Давайте будем гением компьютера.