종료하는 데 사용되는 명령은 무엇입니까? (즉 Node.js 프로세스를 종료)
답변
전역 process
객체의 exit
메소드를 호출하십시오 .
process.exit()
process.exit ([코드])
지정된로 프로세스를 종료합니다
code
. 생략하면 exit는 ‘성공’코드를 사용합니다0
.‘실패’코드로 종료하려면 :
process.exit(1);
노드를 실행 한 쉘은 종료 코드를로 표시해야합니다
1
.
답변
그냥 참고 사용하는 것으로는 process.exit([number])
것입니다 권장하지 연습.
호출
process.exit()
은 아직 완료되지 않은 비동기 작업이 아직 완료되지 않은 경우에도process.stdout
및에 대한 I / O 작업을 포함하여 프로세스를 최대한 빨리 종료
process.stderr
합니다.대부분의 상황에서 실제로
process.exit()
명시 적으로 호출 할 필요는 없습니다
. 이벤트 루프에 보류중인 추가 작업이 없으면 Node.js 프로세스가 자체적으로 종료됩니다.
process.exitCode
속성은 종료 코드가 때 프로세스가 종료 정상적으로 사용하는 과정을 말하도록 설정할 수 있습니다.예를 들어, 다음 예제는 인쇄 된 데이터 가 잘리고 손실 될 수 있는 방법 의 오용 을
보여줍니다 .process.exit()
stdout
// 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; }
답변
공식 nodejs.org 문서에서 :
process.exit(code)
지정된 코드로 프로세스를 종료합니다. 생략하면 exit는 ‘성공’코드 0을 사용합니다.
‘실패’코드로 종료하려면 :
process.exit(1);
답변
Unix 터미널 또는 Windows 명령 행에 있고 Node REPL을 종료하려면 다음 중 하나를 수행하십시오.
- Ctrl+를 C두 번 누르 거나
- 입력
.exit
하고 Enter를 누르십시오. 또는 - 줄의 시작 부분에서 Ctrl+ D를 누르십시오 (Unix 만 해당)
답변
명령 행에서 .exit
원하는 것이 있습니다.
$ node
> .exit
$
REPL docs에 문서화되어 있습니다. REPL (Read-Eval-Print-Loop)은 노드 명령 행이라고합니다.
일반 프로그램에서을 사용하십시오 process.exit([code])
.
답변
node.js 프로세스를 종료하려는 이유에 따라 다르지만 process.exit()
, 마지막으로 고려해야 할 옵션이 있습니다. 설명서의 인용문 :
그것은주의하는 것이 중요하다 호출
process.exit()
여전히 아직 O의에 운영 I을 /를 포함, 완전히 완료되지 않은 보류중인 비동기 작업이있는 경우에도 가능한 한 빨리으로 출구 프로세스를 강제process.stdout
하고process.stderr
.대부분의 상황에서 실제로
process.exit()
명시 적으로 호출 할 필요는 없습니다
. 이벤트 루프에 보류중인 추가 작업이없는 경우 Node.js 프로세스가 자체적으로 종료됩니다.
process.exitCode
속성은 종료 코드가 때 프로세스가 종료 정상적으로 사용하는 과정을 말하도록 설정할 수 있습니다.
node.js 프로세스를 기꺼이 종료 할 수있는 이유와 피해야하는 이유에 대해 살펴 보겠습니다 process.exit()
.
사례 1-실행 완료 (명령 줄 스크립트)
스크립트가 종료되고 노드 인터프리터가 종료되지 않으면 일부 비동기 작업이 여전히 보류 중임을 나타냅니다. process.exit()
이 시점에서 프로세스를 강제 종료하는 것은 잘못 입니다. 스크립트가 예상대로 종료되지 않도록하는 것이 무엇인지 이해 하는 것이 좋습니다 . 이를 해결하면 process.exitCode
호출 프로세스에 결과를 반환하는 데 사용할 수 있습니다 .
사례 2-외부 신호로 인한 종료 (SIGINT / SIGTERM / 기타)
예를 들어 Express 앱 을 정상적으로 종료하려는 경우 . 명령 줄 스크립트와 달리 Express 앱은 새로운 요청을 기다리면서 계속 실행됩니다. 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()
일 수 있습니다. 프로세스가 종료 될 것임을 확신 할 수 있습니다.
답변
REPL (명령 줄)
-
두 번 누르십시오
ctrl + c
-
입력
.exit
하고 Enter를 누르십시오
스크립트 파일
process.exit(code)
더 이상 비동기 작업이 보류되지 않으면 노드는 일반적으로 코드 0 으로 종료됩니다 .
process.exit(1)
실패 코드와 함께 종료하는 데 사용해야합니다. 이렇게하면 노드가 정상적으로 닫히지 않고 강제로 닫 혔음을 알 수 있습니다.
같은 다른 종료 코드가 있습니다
3-내부 JavaScript 구문 분석 오류 (매우 드문 경우)
5-v8 자바 스크립트 엔진의 치명적 오류
9-잘못된 인수
전체 목록은 노드 종료 코드를 참조하십시오.