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

Какая команда используется для выхода? (т.е. прекратить процесс Node.js)

+1648
источник поделиться
20 ответов

Вызвать глобальный process объект exit метод:

process.exit()

Из документов:

process.exit([код])

Завершает процесс с помощью указанного code. Если этот параметр опущен, на выходе используется код успеха 0.

Для выхода с кодом ошибки:

process.exit(1);

Оболочка, которая выполнила node, должна видеть код выхода как 1.

+2085
источник

Из официальной nodejs.org документация:

process.exit(code)

Завершает процесс указанным кодом. Если опустить, exit использует код "success" 0.

Для выхода с кодом ошибки:

process.exit(1);
+354
источник
другие ответы

Связанные вопросы


Похожие вопросы

Просто обратите внимание, что использование process.exit([number]) не рекомендуется.

Вызов process.exit() заставит процесс завершиться как можно быстрее, даже если все еще существуют незавершенные асинхронные операции, которые еще не завершены полностью, включая операции ввода-вывода для process.stdout и process.stderr.

В большинстве случаев на самом деле нет необходимости явно вызывать process.exit(). Процесс Node.js выйдет сам по себе, если в цикле обработки событий не ожидается дополнительная работа. Свойство process.exitCode может быть установлено, чтобы сообщить процессу, какой код завершения использовать, когда процесс завершается корректно.

Например, в следующем примере показано неправильное использование метода process.exit(), которое может привести к усечению и потере данных, выводимых на стандартный вывод:

// This is an example of what *not* to do:
if (someConditionNotMet()) {
  printUsageToStdout();
  process.exit(1);
}

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

Вместо непосредственного вызова process.exit() код должен установить process.exitCode и позволить процессу выйти естественным образом, избегая планирования какой-либо дополнительной работы для цикла событий:

// How to properly set the exit code while letting
// the process exit gracefully.
if (someConditionNotMet()) {
  printUsageToStdout();  
  process.exitCode = 1;
}
+295
источник

Если вы находитесь в терминале Unix или в командной строке Windows и хотите выйти из Node REPL, либо...

  • Дважды нажмите Ctrl + C или
  • введите .exit и нажмите Enter, или
  • нажмите Ctrl + D в начале строки (только для Unix)
+256
источник

Из командной строки .exit - это то, что вы хотите:

$ node
> .exit
$

Он задокументирован в REPL docs. REPL (Read-Eval-Print-Loop) - это вызов командной строки Node.

Из обычной программы используйте process.exit([code]).

+116
источник

Это зависит от причины, по которой вы готовы выйти из процесса node.js, но в любом случае process.exit() является последним вариантом для рассмотрения. Цитата из документации:

Важно отметить, что вызов process.exit() заставит чтобы выйти как можно быстрее, даже если есть еще асинхронные операции, которые еще не завершены, включая операции ввода-вывода до process.stdout и process.stderr.

В большинстве ситуаций на самом деле нет необходимости звонить process.exit() явно. Процесс node.js выйдет из него самостоятельно. если в цикле событий нет дополнительной работы. Свойство process.exitCode может быть установлено для указания процесса, который выходит код для использования, когда процесс выходит изящно.

Давайте рассмотрим возможные причины, по которым вы можете выйти из процесса node.js и почему вам следует избегать process.exit():

Случай 1 - Выполнение завершено (командная строка script)

Если script достиг своего конца, а интерпретатор node не выходит, это указывает на то, что некоторые операции async все еще находятся на рассмотрении. Неправильно для завершения процесса завершение с process.exit() на этом этапе. Лучше попытаться понять что удерживает ваш script от ожидаемого пути. И когда вы это сделаете, вы можете использовать process.exitCode для возврата любого результата в вызывающий процесс.

Случай 2 - Прекращение из-за внешнего сигнала (SIGINT/SIGTERM/другое)

Например, если вы готовы изящно закрыть приложение экспресс. В отличие от командной строки script, экспресс-приложение работает бесконечно, ожидая новых запросов. process.exit() будет плохой вариант здесь, потому что он собирается прервать все запросы, которые находятся в конвейере. И некоторые из них могут быть не-идемпотентными (UPDATE, DELETE). Клиент никогда не узнает, завершены ли эти запросы или нет на стороне сервера, и это может быть причиной несогласованности данных между клиентом и сервером. Единственное хорошее решение - сообщить http-серверу о прекращении приема новых запросов и ожидание ожидающих завершения с помощью server.close():

var express = require('express');
var app = express();
var server = app.listen(80);

process.on( 'SIGTERM', function () {
   server.close(function () {
     console.log("Finished all requests");
   });
});

Если он все еще не выходит - см. Случай 1.

Случай 3 - Внутренняя ошибка

Всегда лучше throw ошибка, вы получите красиво отформатированную трассировку стека и сообщение об ошибке. Верхние уровни кода всегда могут решить, могут ли они обрабатывать ошибки (catch) или позволить ему вывести из строя этот процесс. С другой стороны, process.exit(1) завершит процесс молча, и от этого не будет возможности восстановиться. Это может быть единственное "преимущество" process.exit(), вы можете быть уверены, что процесс будет завершен.

+68
источник

REPL (Командная строка)

  • Нажмите ctrl + c дважды

  • Введите .exit и нажмите enter

Script Файл

process.exit(code)

Node обычно выходит с кодом 0, когда больше не выполняется асинхронных операций.

process.exit(1) следует использовать для выхода с кодом отказа. Это позволит нам сделать вывод, что node не закрывался грациозно и был вынужден закрыть.

Существуют другие коды выхода, такие как

3 - Внутренняя ошибка анализа JavaScript (очень редко)

5 - Неустранимая ошибка в javascript engine v8

9 - Недопустимый аргумент

Полный список см. Node коды выхода

+24
источник

У меня есть приложение, которое я хотел:

  • Отправить электронное письмо пользователю
  • Выход с кодом ошибки

Мне пришлось привязать process.exit(code) к обработчику событий exit, иначе почта не будет отправлена, так как вызов process.exit(code) напрямую убивает асинхронные события.

#!/usr/bin/nodejs
var mailer = require('nodemailer');
var transport = mailer.createTransport();
mail = {
  to: 'Dave Bowman',
  from: 'HAL 9000',
  subject: 'Sorry Dave',
  html: 'Im sorry, Dave. Im afraid I cant do <B>THAT</B>.'
}
transport.sendMail(mail);
//process.exit(1);
process.on('exit', function() { process.exit(1); });
+12
источник

Как отметил @Dominic, выбрасывать неперехваченную ошибку лучше, чем вызывать process.exit([code]):
process.exitCode = 1; throw new Error("my module xx condition failed");

+9
источник

Чтобы выйти из

let exitCode = 1;
process.exit(exitCode)

Полезные коды выхода

1 - Catchall for general errors
2 - Misuse of shell builtins (according to Bash documentation)
126 - Command invoked cannot execute
127 - "command not found"
128 - Invalid argument to exit
128+n - Fatal error signal "n"
130 - Script terminated by Control-C
255\* - Exit status out of range
+8
источник

Нажмите Ctrl + C дважды или. .exit.

> 
(To exit, press ^C again or type .exit)
> 
+8
источник

Из кода вы можете использовать process.exit([errorcode]) где [errorcode] является необязательным целым числом (по умолчанию 0 указывает на успех).

Если вы используете Read Eval Print Loop (REPL), вы можете использовать Ctrl + D или ввести .exit

Кроме того, в Windows или Linux вы можете использовать Ctrl + C, Ctrl + C

На Mac это команда Ctrl + Z, Ctrl + Z

+7
источник

Я смог заставить все процессы моего узла умереть непосредственно из оболочки Git Bash в Windows 10, набрав taskkill -F -IM node.exe - это завершает все процессы узла на моем компьютере одновременно. Я обнаружил, что могу также использовать taskkill//F//IM node.exe. Не уверен, почему и - и // работают в этом контексте. Надеюсь это поможет!

+3
источник

Командная строка

Нажмите CTRL + C дважды

ИЛИ ЖЕ

Введите .exit и нажмите ввод

Файл сценария

process.exit(code)
+1
источник

если вы хотите выйти из приложения js узла, напишите

process.exit(1)

в вашем коде

0
источник

Откройте терминал командной строки, где запущено приложение узла, и нажмите Ctrl + C

если вы хотите выйти из приложения js узла из кода,

process.exit(); // graceful termination 
process.exit(1); // non graceful termination 
0
источник

Выход в узел js выполняется двумя способами:

  • Вызов process.exit() явно.
  • Или, если цикл событий nodejs выполнен со всеми задачами, и ничего не остается сделать. Затем приложение узла автоматически завершит работу.

Как это устроено?

Если вы хотите заставить цикл выполнения остановить процесс, вы можете использовать глобальную переменную process, которая является экземпляром EventEmitter. Поэтому, когда вы вызываете process.exit(), вы фактически генерируете событие выхода, которое немедленно завершает все задачи, даже если асинхронные операции еще не выполнены.

process.exit() принимает код выхода (Integer) в качестве параметра. Код 0 является значением по умолчанию, и это означает, что он завершается с "успехом". В то время как код 1 означает, что он завершается с "неудачей".

0
источник

Я обычно использую return когда хочу выйти :)

0
источник

Поскольку процесс является глобальным объектом, вам не нужно импортировать какой-либо модуль. Следующая функция завершает или убивает текущий процесс узла.

process.exit (код)

process.kill(process.pid)

process.abort()

0
источник

Вы можете использовать функцию process.exit([code]).

Если вы хотите выйти без "сбоя", используйте код 0:

process.exit(0);

Чтобы выйти с кодом "сбой" 1 вы можете запустить:

process.exit(1);

Код сбоя является специфическим для приложения. Таким образом, вы можете использовать свои собственные соглашения для этого.

-2
источник

Посмотрите другие вопросы по метке или Задайте вопрос