Рубрики
Без рубрики

Как выйти в Node.js

Автор оригинала: Tendai Mutunhire.

В этом руководстве мы покажем вам различные способы выхода из программ Node.js. Вам нужно сначала понять, что Node.js работает на одном потоке или основном процессе. Вы можете создавать дополнительные детские процессы для обработки дополнительной работы. Выход в основной процесс позволяет нам выйти из узла.

Хотя есть много способов выхода из узла, некоторые способы лучше других для определенных ситуаций, как если вы запускаете REFL или нет. Мы объясним это более подробно по всей статье.

Позволить скрипту выйти неявно

Выход из программы Node.js, запущенная в командной строке, может быть так же просто, как ожидание сценария для завершения выполнения. Неявно, процесс Node.js выйдет, когда он достигнет конца сценария.

Вы можете увидеть это, запустив следующий скрипт:

// batman.js
console.log('Batman begins');

process.on('exit', function(code) {
    return console.log(`About to exit with code ${code}`);
});

Запустите программу с помощью команды Node Batman.js , и вы увидите, что это выводит первое утверждение о Бэтмене. Кроме того, «Выход» обратных вызовов зажигается, что приводит к распечатанию из сообщения о выходе, и код выхода. Вы должны увидеть что-то похожее на следующее:

$ node batman.js 
Batman begins
About to exit with code 0

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

// batman.js

// ...

setInterval((function() {
    return console.log('I\'m Batman!');
}), 1000);

Запустите его снова. На этот раз программа не выходит, потому что повторяющаяся Setinterval Функциональные блоки odde.js от выхода. Ваш выход будет выглядеть похоже на это:

$ node batman.js 
Batman begins
I'm Batman!
I'm Batman!
I'm Batman!
...

Где “я Бэтмен!” Фраза непрерывно напечатана до тех пор, пока вы не выйди, как с Ctrl + C или закройте свой терминал.

Использование process.exit ()

Мы можем выйти из программ Node.js, используя явную Process.exit Функциональный вызов. Process.exit Функция выходит из текущего процесса Node.js. Требуется код выхода, который является целым числом.

Процесс Объект – это Глобальная переменная Это позволяет нам управлять текущим процессом Node.js. Поскольку это глобальный, мы можем получить доступ к нему из любой точки в программе Node.js без использования требуется импортировать его.

Давайте обновим последнюю программу, которая не выходит из-за Setinterval функция. На этот раз мы заставим его выйти, используя Тайм-аут Через 5 секунд прошло. Добавьте следующую функцию в тот же сценарий «Batman.js» от ранее.

// batman.js

// ...

setTimeout((function() {
    return process.exit(22);
}), 5000);

Когда вы запустите Node Batman.js , Вы заметите, что на этот раз программа работает в течение ограниченного времени, а затем выходит с кодом выхода из 22.

node batman.js 
Batman begins
I'm Batman!
I'm Batman!
I'm Batman!
I'm Batman!
About to exit with code 22

Использование Process.exit Работает для выхода из reft (который посмотрим позже), а также для завершения запущенных программ или скриптов Node.js.

Node.js интерпретирует ненулевые коды как сбой, а выходной код 0 как успех.

Выход из Node.js с использованием процесса .kill ()

Мы также можем выйти из Node.js, используя Process.kill Убить бегущего процесса Node.js. Разница между этим и Process.exit Это Process.kill берет PID или идентификатор процесса, процесса, который мы хотим убить, а также необязательный сигнал что мы хотим отправить в процесс. Это означает, что мы можем отправлять сигналы для уничтожения процессов, отличных от основного процесса Node.js. Это полезно в очень одновременном приложениях со многими работающими процессами.

Убить основной процесс узла, мы просто передаем PID основного процесса.

Чтобы увидеть это в эксплуатации, замените Сетримс Функция в нашем предыдущем примере кода с этой версией, которая использует Process.kill Отказ

// batman.js

// ...

setTimeout((function() {
    return process.kill(process.pid);
}), 5000);

Программа выходит на расписание, как и раньше, после того, как некоторые из одинаковых операторов печатаются. На этот раз PID Также печатается на консоль (ваша может отличаться от 15):

$ node batman.js 
Batman begins
I'm Batman!
I'm Batman!
I'm Batman!
I'm Batman!
Terminated: 15

Этот метод также работает в REPL, а также в программах Node.js.

Как выйти из Node.js, используя Process.abort

Аналогично, мы можем использовать Процесс.abort Чтобы выйти из Node.js. Этот метод работает в REPL, а также скрипты и приложениями.

Разница между Процесс.abort , Process.kill и Process.exit Это Процесс.abort Всегда выходит из Node.js немедленно и генерирует основной файл. Кроме того, никаких обратных вызовов событий не будет работать.

Примечание : Только что упомянутый файл сердечника не создан, если ulimit -c установлен на 0 Отказ Посмотреть Это руководство Больше подробностей.

Чтобы увидеть это в действии, замените Process.kill Позвоните в нашу Batman.js Файл с вызовом на Процесс.abort и беги Node Batman.js Отказ

// batman.js

// ...

setTimeout((function() {
    return process.abort();
}), 5000);

Когда вы запустите программу с Node Batman.js Программа распечатает строки, как и раньше, но выходит после прогона ожидания времени, распечатывая некоторую информацию о состоянии программы, когда она прервана.

$ node batman.js 
Batman begins
I'm Batman!
I'm Batman!
I'm Batman!
I'm Batman!
Abort trap: 6

Refl.

Так как Реп (LOOT-PRINT-PRINT) – это разный тип выполнения среды выполнения из вашего типичного сценария Node.js, эти стратегии выхода заслуживают своих собственных специальных разделов. Это потому, что ref – это интерактивная среда и не просто неявно выходит, как сценарий.

Как мы упоминались в некоторых из предыдущих разделов, некоторые из вышеуказанных стратегий будут работать в REPL. Однако это не типично использовать их в этом случае, и вы должны вместо этого использовать следующие методы.

Выход с использованием комбинации ключей

В отличие от Vim, выход из ревки действительно просто. В работе REPL вы можете выйти из него, используя комбинацию клавиш Ctrl + C и вводит его в два раза. Это отправляет Сигинт или сигнал прерывания, до reft. Это обычно используется для выхода программ в системах POSIX.

Используя команду .exit

Мы также можем выйти из Node.js, замену, используя команду «.exit». Когда вы вводите это в RIDENT UDE REPL, текущая рент выйдет. Этот вызов работает похоже на Ctrl + C Способ обсуждается выше.

Заключение

Во многих случаях, используя Process.exit Доспостается для выхода из Node.js. Однако, как мы видели, есть многочисленные альтернативы. Различные методы дают вам гибкость для выхода из любого конкретного места в вашем коде. Однако вы должны быть осторожны с этой дополнительной мощностью, однако, не вставлять опасный код, который может привести к незапланированным выходам, сбивая ваши программы.