명령줄 API
Node.js는 다양한 CLI 옵션을 제공합니다. 이러한 옵션은 내장 디버깅, 스크립트 실행의 여러 가지 방법 및 기타 유용한 런타임 옵션을 제공합니다.
터미널에서 이 설명서를 매뉴얼 페이지로 보려면 man node
를 실행합니다.
개요
node [options] [V8 options] [\<program-entry-point\> | -e "script" | -] [--] [arguments]
node inspect [\<program-entry-point\> | -e "script" | \<host\>:\<port\>] …
node --v8-options
인수 없이 실행하여 REPL을 시작합니다.
node inspect
에 대한 자세한 내용은 디버거 설명서를 참조하십시오.
프로그램 진입점
프로그램 진입점은 지정자와 같은 문자열입니다. 문자열이 절대 경로가 아니면 현재 작업 디렉토리에서 상대 경로로 확인됩니다. 그런 다음 해당 경로는 CommonJS 모듈 로더에 의해 확인됩니다. 해당 파일이 없으면 오류가 발생합니다.
파일이 발견되면 다음 조건 중 하나에 따라 경로가 ES 모듈 로더에 전달됩니다.
- 프로그램이 진입점을 ECMAScript 모듈 로더로 로드하도록 강제하는 명령줄 플래그(예:
--import
)를 사용하여 시작된 경우. - 파일의 확장자가
.mjs
인 경우. - 파일의 확장자가
.cjs
가 아니고 가장 가까운 상위package.json
파일에"module"
값을 가진 최상위"type"
필드가 포함된 경우.
그렇지 않으면 CommonJS 모듈 로더를 사용하여 파일이 로드됩니다. 자세한 내용은 모듈 로더를 참조하십시오.
ECMAScript 모듈 로더 진입점 주의 사항
ES 모듈 로더는 로드 시 프로그램 진입점을 로드하며, node
명령은 .js
, .mjs
또는 .cjs
확장자를 가진 파일과 --experimental-wasm-modules
가 활성화된 경우 .wasm
확장자를 가진 파일만 입력으로 허용합니다.
옵션
[히스토리]
버전 | 변경 사항 |
---|---|
v10.12.0 | Node.js 옵션에도 V8 옵션 외에 하이픈 대신 밑줄을 사용할 수 있습니다. |
V8 옵션을 포함한 모든 옵션은 하이픈(-
) 또는 밑줄(_
)로 단어를 구분할 수 있습니다. 예를 들어 --pending-deprecation
은 --pending_deprecation
과 같습니다.
단일 값을 사용하는 옵션(--max-http-header-size
등)을 두 번 이상 전달하면 마지막으로 전달된 값이 사용됩니다. 명령줄의 옵션은 NODE_OPTIONS
환경 변수를 통해 전달된 옵션보다 우선합니다.
-
추가된 버전: v8.0.0
표준 입력(stdin)의 별칭입니다. 다른 명령줄 유틸리티에서 -
를 사용하는 것과 유사하게, 스크립트가 표준 입력에서 읽히고 나머지 옵션은 해당 스크립트에 전달됨을 의미합니다.
--
추가된 버전: v6.11.0
Node.js 옵션의 끝을 나타냅니다. 나머지 인수를 스크립트에 전달합니다. 이 옵션 이전에 스크립트 파일 이름이나 eval/print 스크립트가 제공되지 않으면 다음 인수가 스크립트 파일 이름으로 사용됩니다.
--abort-on-uncaught-exception
추가된 버전: v0.10.8
종료 대신 중단하면 디버거(예: lldb
, gdb
, mdb
)를 사용하여 사후 분석을 위해 코어 파일이 생성됩니다.
이 플래그가 전달되더라도 process.setUncaughtExceptionCaptureCallback()
(및 이를 사용하는 node:domain
모듈 사용을 통해)를 통해 중단하지 않도록 동작을 설정할 수 있습니다.
--allow-addons
추가된 버전: v21.6.0, v20.12.0
권한 모델을 사용할 때, 프로세스는 기본적으로 네이티브 애드온을 사용할 수 없습니다. 사용자가 Node.js를 시작할 때 명시적으로 --allow-addons
플래그를 전달하지 않으면 이러한 시도는 ERR_DLOPEN_DISABLED
를 throw합니다.
예시:
// 네이티브 애드온을 require하려고 시도합니다.
require('nodejs-addon-example')
$ node --permission --allow-fs-read=* index.js
node:internal/modules/cjs/loader:1319
return process.dlopen(module, path.toNamespacedPath(filename));
^
Error: 애드온 로딩이 비활성화되어 네이티브 애드온을 로드할 수 없습니다.
at Module._extensions..node (node:internal/modules/cjs/loader:1319:18)
at Module.load (node:internal/modules/cjs/loader:1091:32)
at Module._load (node:internal/modules/cjs/loader:938:12)
at Module.require (node:internal/modules/cjs/loader:1115:19)
at require (node:internal/modules/helpers:130:18)
at Object.<anonymous> (/home/index.js:1:15)
at Module._compile (node:internal/modules/cjs/loader:1233:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1287:10)
at Module.load (node:internal/modules/cjs/loader:1091:32)
at Module._load (node:internal/modules/cjs/loader:938:12) {
code: 'ERR_DLOPEN_DISABLED'
}
--allow-child-process
추가됨: v20.0.0
권한 모델을 사용할 때, 프로세스는 기본적으로 자식 프로세스를 생성할 수 없습니다. 사용자가 Node.js를 시작할 때 --allow-child-process
플래그를 명시적으로 전달하지 않으면 이러한 시도는 ERR_ACCESS_DENIED
를 throw합니다.
예시:
const childProcess = require('node:child_process')
// 권한 우회 시도
childProcess.spawn('node', ['-e', 'require("fs").writeFileSync("/new-file", "example")'])
$ node --permission --allow-fs-read=* index.js
node:internal/child_process:388
const err = this._handle.spawn(options);
^
Error: Access to this API has been restricted
at ChildProcess.spawn (node:internal/child_process:388:28)
at Object.spawn (node:child_process:723:9)
at Object.<anonymous> (/home/index.js:3:14)
at Module._compile (node:internal/modules/cjs/loader:1120:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1174:10)
at Module.load (node:internal/modules/cjs/loader:998:32)
at Module._load (node:internal/modules/cjs/loader:839:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47 {
code: 'ERR_ACCESS_DENIED',
permission: 'ChildProcess'
}
--allow-fs-read
[히스토리]
버전 | 변경 사항 |
---|---|
v23.5.0 | 권한 모델 및 --allow-fs 플래그가 안정화되었습니다. |
v20.7.0 | 쉼표(, )로 구분된 경로는 더 이상 허용되지 않습니다. |
v20.0.0 | 추가됨: v20.0.0 |
이 플래그는 권한 모델을 사용하여 파일 시스템 읽기 권한을 구성합니다.
--allow-fs-read
플래그에 대한 유효한 인수는 다음과 같습니다.
*
- 모든FileSystemRead
작업을 허용합니다.- 여러 개의
--allow-fs-read
플래그를 사용하여 여러 경로를 허용할 수 있습니다. 예:--allow-fs-read=/folder1/ --allow-fs-read=/folder1/
예시는 파일 시스템 권한 문서에서 확인할 수 있습니다.
초기화 모듈도 허용되어야 합니다. 다음 예를 참조하십시오.
$ node --permission index.js
Error: Access to this API has been restricted
at node:internal/main/run_main_module:23:47 {
code: 'ERR_ACCESS_DENIED',
permission: 'FileSystemRead',
resource: '/Users/rafaelgss/repos/os/node/index.js'
}
프로세스는 index.js
모듈에 대한 액세스 권한이 있어야 합니다.
node --permission --allow-fs-read=/path/to/index.js index.js
--allow-fs-write
[히스토리]
버전 | 변경 사항 |
---|---|
v23.5.0 | 권한 모델 및 --allow-fs 플래그가 안정화되었습니다. |
v20.7.0 | 쉼표(, )로 구분된 경로는 더 이상 허용되지 않습니다. |
v20.0.0 | 추가됨: v20.0.0 |
이 플래그는 권한 모델을 사용하여 파일 시스템 쓰기 권한을 구성합니다.
--allow-fs-write
플래그에 대한 유효한 인수는 다음과 같습니다.
*
- 모든FileSystemWrite
작업을 허용합니다.- 여러 개의
--allow-fs-write
플래그를 사용하여 여러 경로를 허용할 수 있습니다. 예:--allow-fs-write=/folder1/ --allow-fs-write=/folder1/
쉼표(,
)로 구분된 경로는 더 이상 허용되지 않습니다. 쉼표를 포함하는 단일 플래그를 전달하면 경고가 표시됩니다.
예시는 파일 시스템 권한 문서에서 확인할 수 있습니다.
--allow-wasi
추가됨: v22.3.0, v20.16.0
권한 모델을 사용하는 경우, 프로세스는 기본적으로 WASI 인스턴스를 생성할 수 없습니다. 보안상의 이유로, 사용자가 메인 Node.js 프로세스에 --allow-wasi
플래그를 명시적으로 전달하지 않는 한, 호출은 ERR_ACCESS_DENIED
를 throw합니다.
예시:
const { WASI } = require('node:wasi')
// 권한 우회 시도
new WASI({
version: 'preview1',
// 전체 파일 시스템 마운트 시도
preopens: {
'/': '/',
},
})
$ node --permission --allow-fs-read=* index.js
Error: Access to this API has been restricted
at node:internal/main/run_main_module:30:49 {
code: 'ERR_ACCESS_DENIED',
permission: 'WASI',
}
--allow-worker
추가됨: v20.0.0
권한 모델을 사용하는 경우, 프로세스는 기본적으로 작업자 스레드를 생성할 수 없습니다. 보안상의 이유로, 사용자가 메인 Node.js 프로세스에 --allow-worker
플래그를 명시적으로 전달하지 않는 한, 호출은 ERR_ACCESS_DENIED
를 throw합니다.
예시:
const { Worker } = require('node:worker_threads')
// 권한 우회 시도
new Worker(__filename)
$ node --permission --allow-fs-read=* index.js
Error: Access to this API has been restricted
at node:internal/main/run_main_module:17:47 {
code: 'ERR_ACCESS_DENIED',
permission: 'WorkerThreads'
}
--build-snapshot
추가됨: v18.8.0
프로세스가 종료될 때 스냅샷 블롭을 생성하고 디스크에 기록합니다. 나중에 --snapshot-blob
을 사용하여 로드할 수 있습니다.
스냅샷을 빌드할 때 --snapshot-blob
이 지정되지 않으면 생성된 블롭은 기본적으로 현재 작업 디렉토리의 snapshot.blob
에 기록됩니다. 그렇지 않으면 --snapshot-blob
으로 지정된 경로에 기록됩니다.
$ echo "globalThis.foo = 'I am from the snapshot'" > snapshot.js
# 애플리케이션을 초기화하고 상태를 snapshot.blob에 스냅샷으로 저장하기 위해 snapshot.js를 실행합니다. {#run-snapshotjs-to-initialize-the-application-and-snapshot-the}
$ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js
$ echo "console.log(globalThis.foo)" > index.js
# 생성된 스냅샷을 로드하고 index.js에서 애플리케이션을 시작합니다. {#state-of-it-into-snapshotblob}
$ node --snapshot-blob snapshot.blob index.js
I am from the snapshot
v8.startupSnapshot
API를 사용하면 스냅샷 빌드 시점에 진입점을 지정하여 역직렬화 시 추가 진입 스크립트가 필요 없도록 할 수 있습니다.
$ echo "require('v8').startupSnapshot.setDeserializeMainFunction(() => console.log('I am from the snapshot'))" > snapshot.js
$ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js
$ node --snapshot-blob snapshot.blob
I am from the snapshot
자세한 내용은 v8.startupSnapshot
API 설명서를 참조하십시오.
현재 런타임 스냅샷 지원은 다음과 같은 이유로 실험적입니다.
--build-snapshot-config
추가됨: v21.6.0, v20.12.0
스냅샷 생성 동작을 구성하는 JSON 구성 파일의 경로를 지정합니다.
현재 다음 옵션이 지원됩니다.
builder
<string> 필수.--build-snapshot
에builder
를 기본 스크립트 이름으로 전달한 것처럼 스냅샷을 빌드하기 전에 실행되는 스크립트의 이름을 제공합니다.withoutCodeCache
<boolean> 선택 사항. 코드 캐시를 포함하면 스냅샷에 포함된 함수를 컴파일하는 데 걸리는 시간이 단축되지만 스냅샷 크기가 커지고 스냅샷의 이식성이 손상될 수 있습니다.
이 플래그를 사용하면 명령줄에 제공된 추가 스크립트 파일은 실행되지 않고 일반 명령줄 인수로 해석됩니다.
-c
, --check
[History]
버전 | 변경 사항 |
---|---|
v10.0.0 | 파일 검사 시 --require 옵션이 지원됩니다. |
v5.0.0, v4.2.0 | 추가됨: v5.0.0, v4.2.0 |
스크립트를 실행하지 않고 구문을 검사합니다.
--completion-bash
추가됨: v10.12.0
Node.js에 사용할 수 있는 bash 자동 완성 스크립트를 출력합니다.
node --completion-bash > node_bash_completion
source node_bash_completion
-C condition
, --conditions=condition
[History]
버전 | 변경 사항 |
---|---|
v22.9.0, v20.18.0 | 플래그가 더 이상 실험적이지 않습니다. |
v14.9.0, v12.19.0 | 추가됨: v14.9.0, v12.19.0 |
[Stable: 2 - Stable]
Stable: 2 Stability: 2 - 안정적
사용자 지정 조건부 내보내기 해결 조건을 제공합니다.
여러 개의 사용자 지정 문자열 조건 이름이 허용됩니다.
"node"
, "default"
, "import"
, "require"
의 기본 Node.js 조건은 정의된 대로 항상 적용됩니다.
예를 들어, "development" 해결 방법을 사용하여 모듈을 실행하려면 다음과 같이 합니다.
node -C development app.js
--cpu-prof
[History]
버전 | 변경 사항 |
---|---|
v22.4.0, v20.16.0 | --cpu-prof 플래그가 안정화되었습니다. |
v12.0.0 | 추가됨: v12.0.0 |
[Stable: 2 - Stable]
Stable: 2 Stability: 2 - 안정적
시작 시 V8 CPU 프로파일러를 시작하고 종료 전에 CPU 프로파일을 디스크에 씁니다.
--cpu-prof-dir
을 지정하지 않으면 생성된 프로파일은 현재 작업 디렉토리에 배치됩니다.
--cpu-prof-name
을 지정하지 않으면 생성된 프로파일의 이름은 CPU.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.cpuprofile
이 됩니다.
$ node --cpu-prof index.js
$ ls *.cpuprofile
CPU.20190409.202950.15293.0.0.cpuprofile
--cpu-prof-dir
[History]
버전 | 변경 사항 |
---|---|
v22.4.0, v20.16.0 | --cpu-prof 플래그가 안정화되었습니다. |
v12.0.0 | 추가됨: v12.0.0 |
[Stable: 2 - Stable]
Stable: 2 Stability: 2 - 안정적
--cpu-prof
에 의해 생성된 CPU 프로파일이 배치될 디렉토리를 지정합니다.
기본값은 --diagnostic-dir
명령줄 옵션에 의해 제어됩니다.
--cpu-prof-interval
[히스토리]
버전 | 변경 사항 |
---|---|
v22.4.0, v20.16.0 | --cpu-prof 플래그가 이제 안정화되었습니다. |
v12.2.0 | 추가됨: v12.2.0 |
--cpu-prof
에 의해 생성된 CPU 프로파일의 샘플링 간격을 마이크로초 단위로 지정합니다. 기본값은 1000마이크로초입니다.
--cpu-prof-name
[히스토리]
버전 | 변경 사항 |
---|---|
v22.4.0, v20.16.0 | --cpu-prof 플래그가 이제 안정화되었습니다. |
v12.0.0 | 추가됨: v12.0.0 |
--cpu-prof
에 의해 생성된 CPU 프로파일의 파일 이름을 지정합니다.
--diagnostic-dir=directory
모든 진단 출력 파일이 작성되는 디렉토리를 설정합니다. 기본값은 현재 작업 디렉토리입니다.
다음의 기본 출력 디렉토리에 영향을 미칩니다.
--disable-proto=mode
추가됨: v13.12.0, v12.17.0
Object.prototype.__proto__
속성을 비활성화합니다. mode
가 delete
이면 속성이 완전히 제거됩니다. mode
가 throw
이면 속성에 대한 액세스는 ERR_PROTO_ACCESS
코드를 가진 예외를 throw합니다.
--disable-warning=code-or-type
추가됨: v21.3.0, v20.11.0
code
또는 type
으로 특정 프로세스 경고를 비활성화합니다.
process.emitWarning()
에서 발생하는 경고에는 code
와 type
이 포함될 수 있습니다. 이 옵션은 일치하는 code
또는 type
을 가진 경고를 발생시키지 않습니다.
Node.js 코어 경고 유형은 DeprecationWarning
및 ExperimentalWarning
입니다.
예를 들어, 다음 스크립트는 node --disable-warning=DEP0025
로 실행될 때 DEP0025 require('node:sys')
를 발생시키지 않습니다.
import sys from 'node:sys'
const sys = require('node:sys')
예를 들어, 다음 스크립트는 DEP0025 require('node:sys')
를 발생시키지만, node --disable-warning=ExperimentalWarning
으로 실행될 때는 모든 Experimental Warning(예: <=v21의 ExperimentalWarning: vm.measureMemory
는 실험적인 기능입니다)을 발생시키지 않습니다.
import sys from 'node:sys'
import vm from 'node:vm'
vm.measureMemory()
const sys = require('node:sys')
const vm = require('node:vm')
vm.measureMemory()
--disable-wasm-trap-handler
추가됨: v22.2.0, v20.15.0
기본적으로 Node.js는 trap-handler 기반 WebAssembly 경계 검사를 활성화합니다. 결과적으로 V8은 WebAssembly에서 컴파일된 코드에 인라인 경계 검사를 삽입할 필요가 없어 WebAssembly 실행 속도가 크게 향상될 수 있지만, 이 최적화에는 큰 가상 메모리 공간(현재 10GB)을 할당해야 합니다. 시스템 구성 또는 하드웨어 제한으로 인해 Node.js 프로세스가 충분한 가상 메모리 주소 공간에 액세스할 수 없는 경우 사용자는 이 가상 메모리 공간에서 할당을 포함하는 WebAssembly를 실행할 수 없으며 메모리 부족 오류가 발생합니다.
$ ulimit -v 5000000
$ node -p "new WebAssembly.Memory({ initial: 10, maximum: 100 });"
[eval]:1
new WebAssembly.Memory({ initial: 10, maximum: 100 });
^
RangeError: WebAssembly.Memory(): could not allocate memory
at [eval]:1:1
at runScriptInThisContext (node:internal/vm:209:10)
at node:internal/process/execution:118:14
at [eval]-wrapper:6:24
at runScript (node:internal/process/execution:101:62)
at evalScript (node:internal/process/execution:136:3)
at node:internal/main/eval_string:49:3
--disable-wasm-trap-handler
는 이 최적화를 비활성화하므로 Node.js 프로세스에서 사용 가능한 가상 메모리 주소 공간이 V8 WebAssembly 메모리 공간에 필요한 양보다 적더라도 사용자가 WebAssembly를 (최적 성능은 아니지만) 실행할 수 있습니다.
--disallow-code-generation-from-strings
추가됨: v9.8.0
문자열에서 코드를 생성하는 eval
및 new Function
과 같은 내장 언어 기능이 예외를 throw하도록 합니다. 이는 Node.js node:vm
모듈에는 영향을 미치지 않습니다.
--dns-result-order=order
[히스토리]
버전 | 변경 사항 |
---|---|
v22.1.0, v20.13.0 | ipv6first 지원 |
v17.0.0 | 기본값을 verbatim 으로 변경 |
v16.4.0, v14.18.0 | 추가됨: v16.4.0, v14.18.0 |
dns.lookup()
및 dnsPromises.lookup()
의 order
기본값을 설정합니다. 값은 다음과 같을 수 있습니다.
ipv4first
: 기본order
를ipv4first
로 설정합니다.ipv6first
: 기본order
를ipv6first
로 설정합니다.verbatim
: 기본order
를verbatim
으로 설정합니다.
기본값은 verbatim
이며 dns.setDefaultResultOrder()
는 --dns-result-order
보다 우선 순위가 높습니다.
--enable-fips
추가됨: v6.0.0
시작 시 FIPS 준수 암호화를 활성화합니다. (FIPS 호환 OpenSSL을 사용하여 Node.js를 빌드해야 함).
--enable-network-family-autoselection
추가됨: v18.18.0
연결 옵션에서 명시적으로 비활성화하지 않는 한 패밀리 자동 선택 알고리즘을 활성화합니다.
--enable-source-maps
[이력]
버전 | 변경 사항 |
---|---|
v15.11.0, v14.18.0 | 이 API는 더 이상 실험적이지 않습니다. |
v12.12.0 | 추가됨: v12.12.0 |
스택 추적을 위한 Source Map v3 지원을 활성화합니다.
TypeScript와 같은 트랜스파일러를 사용하는 경우 애플리케이션에서 throw된 스택 추적은 원본 소스 위치가 아닌 트랜스파일된 코드를 참조합니다. --enable-source-maps
는 소스 맵의 캐싱을 활성화하고 원본 소스 파일을 기준으로 스택 추적을 보고하려고 최선을 다합니다.
Error.prepareStackTrace
를 재정의하면 --enable-source-maps
가 스택 추적을 수정하지 못할 수 있습니다. 소스 맵으로 스택 추적을 수정하려면 재정의 함수에서 원래 Error.prepareStackTrace
의 결과를 호출하고 반환하십시오.
const originalPrepareStackTrace = Error.prepareStackTrace
Error.prepareStackTrace = (error, trace) => {
// 오류와 추적을 수정하고 원래 Error.prepareStackTrace로 스택 추적을 형식화합니다.
return originalPrepareStackTrace(error, trace)
}
참고로, 소스 맵을 활성화하면 Error.stack
에 액세스할 때 애플리케이션에 지연 시간이 발생할 수 있습니다. 애플리케이션에서 Error.stack
에 자주 액세스하는 경우 --enable-source-maps
의 성능 영향을 고려하십시오.
--entry-url
추가됨: v23.0.0
사용되는 경우 Node.js는 진입점을 경로가 아닌 URL로 해석합니다.
ECMAScript 모듈 해석 규칙을 따릅니다.
URL의 쿼리 매개변수 또는 해시는 import.meta.url
을 통해 액세스할 수 있습니다.
node --entry-url 'file:///path/to/file.js?queryparams=work#and-hashes-too'
node --entry-url --experimental-strip-types 'file.ts?query#hash'
node --entry-url 'data:text/javascript,console.log("Hello")'
--env-file-if-exists=config
추가됨: v22.9.0
--env-file
과 동일하게 동작하지만, 파일이 존재하지 않더라도 오류가 발생하지 않습니다.
--env-file=config
[히스토리]
버전 | 변경 사항 |
---|---|
v21.7.0, v20.12.0 | 여러 줄 값 지원 추가 |
v20.6.0 | 추가됨: v20.6.0 |
현재 디렉토리를 기준으로 파일에서 환경 변수를 로드하여 process.env
에서 애플리케이션이 사용할 수 있도록 합니다. NODE_OPTIONS
와 같은 Node.js를 구성하는 환경 변수는 파싱되어 적용됩니다. 환경과 파일에 동일한 변수가 정의되어 있는 경우 환경의 값이 우선합니다.
여러 개의 --env-file
인수를 전달할 수 있습니다. 이후 파일은 이전 파일에 정의된 기존 변수를 덮어씁니다.
파일이 존재하지 않으면 오류가 발생합니다.
node --env-file=.env --env-file=.development.env index.js
파일 형식은 환경 변수 이름과 값의 키-값 쌍이 =
로 구분된 한 줄이어야 합니다.
PORT=3000
#
이후의 텍스트는 주석으로 처리됩니다.
# 이것은 주석입니다 {#--env-file=config}
PORT=3000 # 이것도 주석입니다
값은 다음 따옴표로 시작하고 끝날 수 있습니다: ```, "
또는'
. 값에서 제거됩니다.
USERNAME="nodejs" # 값으로 `nodejs`가 됩니다.
여러 줄 값이 지원됩니다.
MULTI_LINE="THIS IS
A MULTILINE"
# 값으로 `THIS IS\nA MULTILINE`이 됩니다. {#this-is-a-comment}
키 앞의 export 키워드는 무시됩니다.
export USERNAME="nodejs" # 값으로 `nodejs`가 됩니다.
존재하지 않을 수 있는 파일에서 환경 변수를 로드하려면 --env-file-if-exists
플래그를 대신 사용할 수 있습니다.
-e
, --eval "script"
{#will-result-in-this-is\na-multiline-as-the-value}
[이력]
버전 | 변경 사항 |
---|---|
v22.6.0 | Eval이 이제 실험적인 형식 제거를 지원합니다. |
v5.11.0 | 내장 라이브러리가 이제 미리 정의된 변수로 사용 가능합니다. |
v0.5.2 | 추가됨: v0.5.2 |
다음 인수를 JavaScript로 평가합니다. REPL에 미리 정의된 모듈도 script
에서 사용할 수 있습니다.
Windows에서 cmd.exe
를 사용하는 경우 작은따옴표는 올바르게 작동하지 않습니다. 큰따옴표("
)만 인식하기 때문입니다. PowerShell 또는 Git Bash에서는 작은따옴표('
)와 큰따옴표("
)를 모두 사용할 수 있습니다.
--experimental-strip-types
를 전달하여 인라인 형식이 포함된 코드를 실행할 수 있습니다.
--experimental-async-context-frame
추가됨: v22.7.0
async_hooks
에 의존하는 기본 구현 대신 AsyncContextFrame
에 의해 지원되는 AsyncLocalStorage
의 사용을 가능하게 합니다. 이 새로운 모델은 매우 다르게 구현되었으므로 애플리케이션 내에서 컨텍스트 데이터가 흐르는 방식에 차이가 있을 수 있습니다. 따라서 현재로서는 프로덕션 환경에서 사용하기 전에 애플리케이션 동작이 이 변경의 영향을 받지 않는지 확인하는 것이 좋습니다.
--experimental-eventsource
추가됨: v22.3.0, v20.18.0
전역 범위에서 EventSource Web API의 노출을 활성화합니다.
--experimental-import-meta-resolve
[이력]
버전 | 변경 사항 |
---|---|
v20.6.0, v18.19.0 | 동기 import.meta.resolve 가 기본적으로 사용 가능하게 되었으며, 이전에 지원되었던 실험적인 두 번째 인수를 활성화하기 위해 플래그가 유지됩니다. |
v13.9.0, v12.16.2 | 추가됨: v13.9.0, v12.16.2 |
실험적인 import.meta.resolve()
상위 URL 지원을 활성화합니다. 이를 통해 컨텍스트 해석을 위해 두 번째 parentURL
인수를 전달할 수 있습니다.
이전에는 전체 import.meta.resolve
기능을 제한했습니다.
--experimental-loader=module
[히스토리]
버전 | 변경 사항 |
---|---|
v12.11.1 | 이 플래그는 --loader 에서 --experimental-loader 로 이름이 변경되었습니다. |
v8.8.0 | 추가됨: v8.8.0 |
내보낸 모듈 사용자 지정 훅을 포함하는 module
을 지정합니다. module
은 import
지정자로 허용되는 모든 문자열일 수 있습니다.
--experimental-network-inspection
추가됨: v22.6.0, v20.18.0
Chrome DevTools를 사용한 네트워크 검사에 대한 실험적 지원을 활성화합니다.
--experimental-print-required-tla
추가됨: v22.0.0, v20.17.0
require()
되는 ES 모듈에 최상위 await
가 포함된 경우, 이 플래그를 사용하면 Node.js에서 모듈을 평가하고 최상위 await를 찾아 위치를 출력하여 사용자가 찾을 수 있도록 도와줍니다.
--experimental-require-module
[히스토리]
버전 | 변경 사항 |
---|---|
v23.0.0 | 이제 기본적으로 활성화됩니다. |
v22.0.0, v20.17.0 | 추가됨: v22.0.0, v20.17.0 |
require()
에서 동기 ES 모듈 그래프 로딩을 지원합니다.
require()
를 사용하여 ECMAScript 모듈 로딩을 참조하십시오.
--experimental-sea-config
추가됨: v20.0.0
이 플래그를 사용하여 Node.js 바이너리에 삽입하여 단일 실행 파일 애플리케이션을 생성할 수 있는 블롭을 생성합니다. 자세한 내용은 이 구성에 대한 설명서를 참조하십시오.
--experimental-shadow-realm
추가됨: v19.0.0, v18.13.0
ShadowRealm 지원을 활성화하려면 이 플래그를 사용합니다.
--experimental-strip-types
추가됨: v22.6.0
TypeScript 파일의 실험적인 형식 제거를 활성화합니다. 자세한 내용은 TypeScript 형식 제거 설명서를 참조하십시오.
--experimental-test-coverage
[이력]
버전 | 변경 사항 |
---|---|
v20.1.0, v18.17.0 | 이 옵션은 --test 와 함께 사용할 수 있습니다. |
v19.7.0, v18.15.0 | 추가됨: v19.7.0, v18.15.0 |
node:test
모듈과 함께 사용하면 테스트 실행기 출력의 일부로 코드 적용 범위 보고서가 생성됩니다. 테스트를 실행하지 않으면 적용 범위 보고서가 생성되지 않습니다. 자세한 내용은 테스트에서 코드 적용 범위 수집에 대한 설명서를 참조하십시오.
--experimental-test-isolation=mode
추가됨: v22.8.0
테스트 실행기에서 사용되는 테스트 격리 유형을 구성합니다. mode
가 'process'
이면 각 테스트 파일은 별도의 하위 프로세스에서 실행됩니다. mode
가 'none'
이면 모든 테스트 파일은 테스트 실행기와 같은 프로세스에서 실행됩니다. 기본 격리 모드는 'process'
입니다. --test
플래그가 없는 경우 이 플래그는 무시됩니다. 자세한 내용은 테스트 실행기 실행 모델 섹션을 참조하십시오.
--experimental-test-module-mocks
추가됨: v22.3.0, v20.18.0
테스트 실행기에서 모듈 모킹을 활성화합니다.
--experimental-transform-types
추가됨: v22.7.0
TypeScript 전용 구문을 JavaScript 코드로 변환하도록 합니다. --experimental-strip-types
및 --enable-source-maps
를 내포합니다.
--experimental-vm-modules
추가됨: v9.6.0
node:vm
모듈에서 실험적인 ES 모듈 지원을 활성화합니다.
--experimental-wasi-unstable-preview1
[히스토리]
버전 | 변경 사항 |
---|---|
v20.0.0, v18.17.0 | WASI가 기본적으로 활성화되어 이 옵션이 더 이상 필요하지 않지만, 여전히 전달할 수 있습니다. |
v13.6.0 | --experimental-wasi-unstable-preview0 에서 --experimental-wasi-unstable-preview1 로 변경되었습니다. |
v13.3.0, v12.16.0 | 추가됨: v13.3.0, v12.16.0 |
실험적인 WebAssembly 시스템 인터페이스(WASI) 지원을 활성화합니다.
--experimental-wasm-modules
추가됨: v12.3.0
실험적인 WebAssembly 모듈 지원을 활성화합니다.
--experimental-webstorage
추가됨: v22.4.0
실험적인 Web Storage
지원을 활성화합니다.
--expose-gc
추가됨: v22.3.0, v20.18.0
이 플래그는 V8에서 gc 확장을 노출합니다.
if (globalThis.gc) {
globalThis.gc()
}
--force-context-aware
추가됨: v12.12.0
컨텍스트 인식이 아닌 네이티브 애드온 로딩을 비활성화합니다.
--force-fips
추가됨: v6.0.0
시작 시 FIPS 준수 암호화를 강제합니다. (스크립트 코드에서 비활성화할 수 없습니다.) (--enable-fips
와 동일한 요구 사항입니다.)
--force-node-api-uncaught-exceptions-policy
추가됨: v18.3.0, v16.17.0
Node-API 비동기 콜백에 uncaughtException
이벤트를 적용합니다.
기존 애드온이 프로세스를 크래시시키는 것을 방지하기 위해 이 플래그는 기본적으로 활성화되지 않습니다. 향후 이 플래그는 올바른 동작을 적용하기 위해 기본적으로 활성화될 것입니다.
--frozen-intrinsics
추가됨: v11.12.0
[Stable: 1 - Experimental]
Stable: 1 Stability: 1 - Experimental
Array
및 Object
와 같은 실험적인 고정 내장 객체를 활성화합니다.
루트 컨텍스트만 지원됩니다. globalThis.Array
가 실제로 기본 내장 참조인지 보장할 수 없습니다. 이 플래그 아래에서 코드가 중단될 수 있습니다.
polyfill을 추가할 수 있도록, --require
및 --import
는 내장 객체를 고정하기 전에 실행됩니다.
--heap-prof
[History]
버전 | 변경 사항 |
---|---|
v22.4.0, v20.16.0 | --heap-prof 플래그가 안정화되었습니다. |
v12.4.0 | 추가됨: v12.4.0 |
[Stable: 2 - Stable]
Stable: 2 Stability: 2 - Stable
시작 시 V8 힙 프로파일러를 시작하고 종료 전에 힙 프로파일을 디스크에 기록합니다.
--heap-prof-dir
이 지정되지 않으면 생성된 프로파일은 현재 작업 디렉토리에 배치됩니다.
--heap-prof-name
이 지정되지 않으면 생성된 프로파일의 이름은 Heap.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.heapprofile
이 됩니다.
$ node --heap-prof index.js
$ ls *.heapprofile
Heap.20190409.202950.15293.0.001.heapprofile
--heap-prof-dir
[History]
버전 | 변경 사항 |
---|---|
v22.4.0, v20.16.0 | --heap-prof 플래그가 안정화되었습니다. |
v12.4.0 | 추가됨: v12.4.0 |
[Stable: 2 - Stable]
Stable: 2 Stability: 2 - Stable
--heap-prof
에 의해 생성된 힙 프로파일이 배치될 디렉토리를 지정합니다.
기본값은 --diagnostic-dir
명령줄 옵션에 의해 제어됩니다.
--heap-prof-interval
[History]
버전 | 변경 사항 |
---|---|
v22.4.0, v20.16.0 | --heap-prof 플래그가 안정화되었습니다. |
v12.4.0 | 추가됨: v12.4.0 |
[Stable: 2 - Stable]
Stable: 2 Stability: 2 - Stable
--heap-prof
에 의해 생성된 힙 프로파일의 평균 샘플링 간격(바이트)을 지정합니다. 기본값은 512 * 1024 바이트입니다.
--heap-prof-name
[히스토리]
버전 | 변경 사항 |
---|---|
v22.4.0, v20.16.0 | --heap-prof 플래그는 이제 안정적입니다. |
v12.4.0 | 추가됨: v12.4.0 |
--heap-prof
에 의해 생성된 힙 프로파일의 파일 이름을 지정합니다.
--heapsnapshot-near-heap-limit=max_count
추가됨: v15.1.0, v14.18.0
V8 힙 사용량이 힙 한계에 가까워지면 V8 힙 스냅샷을 디스크에 기록합니다. count
는 음이 아닌 정수여야 합니다(이 경우 Node.js는 디스크에 최대 max_count
개의 스냅샷만 기록합니다).
스냅샷을 생성할 때 가비지 컬렉션이 트리거되어 힙 사용량이 줄어들 수 있습니다. 따라서 Node.js 인스턴스가 최종적으로 메모리가 부족해지기 전에 여러 스냅샷이 디스크에 기록될 수 있습니다. 이러한 힙 스냅샷을 비교하여 연속적인 스냅샷이 찍히는 동안 어떤 객체가 할당되는지 확인할 수 있습니다. Node.js가 정확히 max_count
개의 스냅샷을 디스크에 기록한다는 보장은 없지만, max_count
가 0
보다 클 경우 Node.js 인스턴스가 메모리가 부족해지기 전에 최소 하나 이상 최대 max_count
개의 스냅샷을 생성하려고 시도합니다.
V8 스냅샷 생성에는 시간과 메모리(V8 힙에 의해 관리되는 메모리와 V8 힙 외부의 네이티브 메모리 모두)가 필요합니다. 힙이 클수록 더 많은 리소스가 필요합니다. Node.js는 추가 V8 힙 메모리 오버헤드를 수용하도록 V8 힙을 조정하고 프로세스에 사용 가능한 모든 메모리를 사용하지 않도록 최선을 다합니다. 프로세스가 시스템이 적절하다고 판단하는 것보다 더 많은 메모리를 사용하는 경우 시스템 구성에 따라 시스템에서 프로세스가 갑자기 종료될 수 있습니다.
$ node --max-old-space-size=100 --heapsnapshot-near-heap-limit=3 index.js
Heap.20200430.100036.49580.0.001.heapsnapshot에 스냅샷 작성됨
Heap.20200430.100037.49580.0.002.heapsnapshot에 스냅샷 작성됨
Heap.20200430.100038.49580.0.003.heapsnapshot에 스냅샷 작성됨
<--- 마지막 몇 개의 GC --->
[49580:0x110000000] 4826 ms: Mark-sweep 130.6 (147.8) -> 130.5 (147.8) MB, 27.4 / 0.0 ms (평균 mu = 0.126, 현재 mu = 0.034) allocation failure scavenge might not succeed
[49580:0x110000000] 4845 ms: Mark-sweep 130.6 (147.8) -> 130.6 (147.8) MB, 18.8 / 0.0 ms (평균 mu = 0.088, 현재 mu = 0.031) allocation failure scavenge might not succeed
<--- JS 스택 추적 --->
FATAL ERROR: 힙 한계 근처에서 비효율적인 mark-compacts 할당 실패 - JavaScript 힙 메모리 부족
....
--heapsnapshot-signal=signal
추가됨: v12.0.0
지정된 시그널을 수신하면 Node.js 프로세스가 힙 덤프를 작성하도록 하는 시그널 핸들러를 활성화합니다. signal
은 유효한 시그널 이름이어야 합니다. 기본적으로 비활성화되어 있습니다.
$ node --heapsnapshot-signal=SIGUSR2 index.js &
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
node 1 5.5 6.1 787252 247004 ? Ssl 16:43 0:02 node --heapsnapshot-signal=SIGUSR2 index.js
$ kill -USR2 1
$ ls
Heap.20190718.133405.15554.0.001.heapsnapshot
-h
, --help
추가됨: v0.1.3
Node 명령줄 옵션을 출력합니다. 이 옵션의 출력은 이 문서보다 자세하지 않습니다.
--icu-data-dir=file
추가됨: v0.11.15
ICU 데이터 로드 경로를 지정합니다. (NODE_ICU_DATA
를 재정의합니다.)
--import=module
추가됨: v19.0.0, v18.18.0
시작 시 지정된 모듈을 미리 로드합니다. 이 플래그가 여러 번 제공되면 각 모듈은 NODE_OPTIONS
에 제공된 것부터 시작하여 나타나는 순서대로 순차적으로 실행됩니다.
ECMAScript 모듈 해석 규칙을 따릅니다. CommonJS 모듈을 로드하려면 --require
을 사용하십시오. --require
로 미리 로드된 모듈은 --import
로 미리 로드된 모듈보다 먼저 실행됩니다.
모듈은 메인 스레드와 모든 워커 스레드, 포크된 프로세스 또는 클러스터된 프로세스에 미리 로드됩니다.
--input-type=type
추가됨: v12.0.0
이는 Node.js가 --eval
또는 STDIN
입력을 CommonJS 또는 ES 모듈로 해석하도록 구성합니다. 유효한 값은 "commonjs"
또는 "module"
입니다. 기본값은 "commonjs"
입니다.
REPL은 이 옵션을 지원하지 않습니다. --print
와 함께 --input-type=module
을 사용하면 --print
가 ES 모듈 구문을 지원하지 않으므로 오류가 발생합니다.
--insecure-http-parser
추가됨: v13.4.0, v12.15.0, v10.19.0
HTTP 파서에 관용 플래그를 활성화합니다. 이를 통해 비표준 HTTP 구현과의 상호 운용성을 허용할 수 있습니다.
활성화되면 파서에서 다음을 허용합니다.
- 잘못된 HTTP 헤더 값.
- 잘못된 HTTP 버전.
Transfer-Encoding
및Content-Length
헤더를 모두 포함하는 메시지 허용.Connection: close
가 있는 경우 메시지 뒤에 추가 데이터 허용.chunked
가 제공된 후 추가 전송 인코딩 허용.- 토큰 구분 기호로
\r\n
대신\n
사용 허용. - 청크 뒤에
\r\n
이 제공되지 않는 것을 허용. - 청크 크기 뒤와
\r\n
앞에 공백이 있는 것을 허용.
위의 모든 내용은 요청 스멀링 또는 포이즈닝 공격에 애플리케이션을 노출시킵니다. 이 옵션을 사용하지 않는 것이 좋습니다.
경고: 공용 IP:포트 조합에 바인딩 검사기는 안전하지 않습니다.
공용 IP(0.0.0.0
포함)에 열린 포트로 검사기를 바인딩하는 것은 안전하지 않습니다. 외부 호스트가 검사기에 연결하여 원격 코드 실행 공격을 수행할 수 있기 때문입니다.
호스트를 지정하는 경우 다음 중 하나를 확인하십시오.
- 호스트가 공용 네트워크에서 액세스할 수 없음.
- 방화벽이 포트에 대한 원치 않는 연결을 허용하지 않음.
더 구체적으로, 포트(기본적으로 9229
)가 방화벽으로 보호되지 않은 경우 --inspect=0.0.0.0
은 안전하지 않습니다.
자세한 내용은 디버깅 보안 문제 섹션을 참조하십시오.
--inspect-brk[=[host:]port]
추가됨: v7.6.0
host:port
에서 검사기를 활성화하고 사용자 스크립트 시작 시 중단합니다. 기본 host:port
는 127.0.0.1:9229
입니다. 포트 0
을 지정하면 사용 가능한 임의 포트가 사용됩니다.
Node.js 디버거에 대한 자세한 설명은 Node.js용 V8 Inspector 통합을 참조하십시오.
--inspect-port=[host:]port
추가됨: v7.6.0
검사기가 활성화될 때 사용할 host:port
를 설정합니다. SIGUSR1
신호를 보내 검사기를 활성화할 때 유용합니다.
기본 호스트는 127.0.0.1
입니다. 포트 0
을 지정하면 사용 가능한 임의 포트가 사용됩니다.
host
매개변수 사용에 대한 자세한 내용은 아래의 보안 경고를 참조하십시오.
--inspect-publish-uid=stderr,http
인스펙터 웹 소켓 URL 노출 방식을 지정합니다.
기본적으로 인스펙터 웹소켓 URL은 stderr과 http://host:port/json/list
엔드포인트의 /json/list
에서 사용할 수 있습니다.
--inspect-wait[=[host:]port]
추가됨: v22.2.0, v20.15.0
host:port
에서 인스펙터를 활성화하고 디버거가 연결될 때까지 기다립니다. 기본 host:port
는 127.0.0.1:9229
입니다. 포트 0
을 지정하면 사용 가능한 임의의 포트가 사용됩니다.
Node.js 디버거에 대한 자세한 설명은 Node.js용 V8 인스펙터 통합을 참조하십시오.
--inspect[=[host:]port]
추가됨: v6.3.0
host:port
에서 인스펙터를 활성화합니다. 기본값은 127.0.0.1:9229
입니다. 포트 0
을 지정하면 사용 가능한 임의의 포트가 사용됩니다.
V8 인스펙터 통합을 통해 Chrome DevTools 및 IDE와 같은 도구를 사용하여 Node.js 인스턴스를 디버깅하고 프로파일링할 수 있습니다. 이러한 도구는 TCP 포트를 통해 Node.js 인스턴스에 연결하고 Chrome DevTools Protocol을 사용하여 통신합니다. Node.js 디버거에 대한 자세한 설명은 Node.js용 V8 인스펙터 통합을 참조하십시오.
-i
, --interactive
추가됨: v0.7.7
stdin이 터미널이 아닌 것으로 보여도 REPL을 엽니다.
--jitless
추가됨: v12.0.0
실행 가능한 메모리의 런타임 할당을 비활성화합니다. 보안상의 이유로 일부 플랫폼에서 필요할 수 있습니다. 다른 플랫폼에서 공격 표면을 줄일 수도 있지만 성능에 심각한 영향을 미칠 수 있습니다.
--localstorage-file=file
추가됨: v22.4.0
localStorage
데이터를 저장하는 데 사용되는 파일입니다. 파일이 존재하지 않으면 localStorage
에 처음 액세스할 때 생성됩니다. 동일한 파일을 여러 Node.js 프로세스에서 동시에 공유할 수 있습니다. Node.js가 --experimental-webstorage
플래그와 함께 시작되지 않는 한 이 플래그는 무시됩니다.
--max-http-header-size=size
[이력]
버전 | 변경 사항 |
---|---|
v13.13.0 | HTTP 헤더의 최대 기본 크기를 8KiB에서 16KiB로 변경했습니다. |
v11.6.0, v10.15.0 | 추가됨: v11.6.0, v10.15.0 |
바이트 단위로 HTTP 헤더의 최대 크기를 지정합니다. 기본값은 16KiB입니다.
--napi-modules
추가됨: v7.10.0
이 옵션은 무효입니다. 호환성을 위해 유지됩니다.
--network-family-autoselection-attempt-timeout
추가됨: v22.1.0, v20.13.0
네트워크 패밀리 자동 선택 시도 시간 초과에 대한 기본값을 설정합니다. 자세한 내용은 net.getDefaultAutoSelectFamilyAttemptTimeout()
을 참조하십시오.
--no-addons
추가됨: v16.10.0, v14.19.0
node-addons
내보내기 조건을 비활성화하고 네이티브 애드온 로드를 비활성화합니다. --no-addons
가 지정되면 process.dlopen
을 호출하거나 네이티브 C++ 애드온을 요구하는 것이 실패하고 예외를 throw합니다.
--no-deprecation
추가됨: v0.8.0
사용 중단 경고를 음소거합니다.
--no-experimental-detect-module
[이력]
버전 | 변경 사항 |
---|---|
v22.7.0 | 구문 감지가 기본적으로 활성화됩니다. |
v21.1.0, v20.10.0 | 추가됨: v21.1.0, v20.10.0 |
모듈 유형을 결정하기 위해 구문 감지를 사용하지 않도록 설정합니다.
--no-experimental-global-navigator
추가됨: v21.2.0
전역 범위에서 Navigator API의 노출을 비활성화합니다.
--no-experimental-repl-await
추가됨: v16.6.0
REPL에서 최상위 await를 비활성화하려면 이 플래그를 사용하십시오.
--no-experimental-require-module
[이력]
버전 | 변경 사항 |
---|---|
v23.0.0 | 이제 기본적으로 false입니다. |
v22.0.0, v20.17.0 | 추가됨: v22.0.0, v20.17.0 |
require()
에서 동기 ES 모듈 그래프 로드에 대한 지원을 비활성화합니다.
require()
를 사용하여 ECMAScript 모듈 로드를 참조하십시오.
--no-experimental-sqlite
[히스토리]
버전 | 변경 사항 |
---|---|
v23.4.0 | SQLite는 플래그가 해제되었지만 여전히 실험적입니다. |
v22.5.0 | 추가됨: v22.5.0 |
실험적인 node:sqlite
모듈을 비활성화합니다.
--no-experimental-websocket
추가됨: v22.0.0
전역 범위에서 WebSocket
의 노출을 비활성화합니다.
--no-extra-info-on-fatal-exception
추가됨: v17.0.0
종료를 유발하는 치명적인 예외에 대한 추가 정보를 숨깁니다.
--no-force-async-hooks-checks
추가됨: v9.0.0
async_hooks
에 대한 런타임 검사를 비활성화합니다. async_hooks
가 활성화되면 여전히 동적으로 활성화됩니다.
--no-global-search-paths
추가됨: v16.10.0
$HOME/.node_modules
및 $NODE_PATH
와 같은 전역 경로에서 모듈을 검색하지 않습니다.
--no-network-family-autoselection
[히스토리]
버전 | 변경 사항 |
---|---|
v20.0.0 | 플래그는 --no-enable-network-family-autoselection 에서 --no-network-family-autoselection 으로 이름이 변경되었습니다. 이전 이름은 여전히 별칭으로 작동할 수 있습니다. |
v19.4.0 | 추가됨: v19.4.0 |
연결 옵션에서 명시적으로 활성화하지 않는 한 패밀리 자동 선택 알고리즘을 비활성화합니다.
--no-warnings
추가됨: v6.0.0
모든 프로세스 경고(사용 중단 포함)를 무시합니다.
--node-memory-debug
추가됨: v15.0.0, v14.18.0
Node.js 내부의 메모리 누수에 대한 추가 디버그 검사를 활성화합니다. 이것은 일반적으로 Node.js 자체를 디버깅하는 개발자에게만 유용합니다.
--openssl-config=file
추가됨: v6.9.0
시작 시 OpenSSL 구성 파일을 로드합니다. 다른 용도 중에서도 Node.js가 FIPS 지원 OpenSSL에 대해 빌드된 경우 FIPS 준수 암호화를 활성화하는 데 사용할 수 있습니다.
--openssl-legacy-provider
추가됨: v17.0.0, v16.17.0
OpenSSL 3.0 레거시 제공자를 활성화합니다. 자세한 내용은 OSSL_PROVIDER-legacy를 참조하십시오.
--openssl-shared-config
추가됨: v18.5.0, v16.17.0, v14.21.0
OpenSSL 기본 구성 섹션인 openssl_conf
를 OpenSSL 구성 파일에서 읽도록 활성화합니다. 기본 구성 파일의 이름은 openssl.cnf
이지만 환경 변수 OPENSSL_CONF
를 사용하거나 명령줄 옵션 --openssl-config
를 사용하여 변경할 수 있습니다. 기본 OpenSSL 구성 파일의 위치는 OpenSSL이 Node.js에 어떻게 링크되는지에 따라 달라집니다. OpenSSL 구성을 공유하면 원치 않는 결과가 발생할 수 있으며 nodejs_conf
인 Node.js에 특정한 구성 섹션을 사용하는 것이 좋습니다. 이 옵션을 사용하지 않으면 기본값으로 설정됩니다.
--pending-deprecation
추가됨: v8.0.0
보류 중인 사용 중단 경고를 방출합니다.
보류 중인 사용 중단은 일반적으로 런타임 사용 중단과 동일하지만, 기본적으로 꺼져 있으며 --pending-deprecation
명령줄 플래그 또는 NODE_PENDING_DEPRECATION=1
환경 변수가 설정되지 않으면 방출되지 않는다는 점이 다릅니다. 보류 중인 사용 중단은 개발자가 사용 중단된 API 사용을 감지하는 데 활용할 수 있는 일종의 선택적 "조기 경고" 메커니즘을 제공하는 데 사용됩니다.
--permission
[이력]
버전 | 변경 사항 |
---|---|
v23.5.0 | 권한 모델이 이제 안정적입니다. |
v20.0.0 | 추가됨: v20.0.0 |
현재 프로세스에 대한 권한 모델을 활성화합니다. 활성화되면 다음 권한이 제한됩니다.
- 파일 시스템 -
--allow-fs-read
,--allow-fs-write
플래그를 통해 관리 가능 - 자식 프로세스 -
--allow-child-process
플래그를 통해 관리 가능 - Worker 스레드 -
--allow-worker
플래그를 통해 관리 가능 - WASI -
--allow-wasi
플래그를 통해 관리 가능 - 애드온 -
--allow-addons
플래그를 통해 관리 가능
--preserve-symlinks
추가됨: v6.3.0
모듈을 확인하고 캐싱할 때 심볼릭 링크를 유지하도록 모듈 로더에 지시합니다.
기본적으로 Node.js가 다른 온디스크 위치에 심볼릭 링크된 경로에서 모듈을 로드할 때, Node.js는 링크의 참조를 해제하고 모듈의 실제 온디스크 "실제 경로"를 식별자와 다른 종속성 모듈을 찾는 루트 경로 모두로 사용합니다. 대부분의 경우 이 기본 동작은 허용됩니다. 그러나 아래 예에서 설명된 것처럼 심볼릭 링크된 피어 종속성을 사용하는 경우 moduleA
가 moduleB
를 피어 종속성으로 요구하려고 하면 기본 동작으로 인해 예외가 발생합니다.
{appDir}
├── app
│ ├── index.js
│ └── node_modules
│ ├── moduleA -> {appDir}/moduleA
│ └── moduleB
│ ├── index.js
│ └── package.json
└── moduleA
├── index.js
└── package.json
--preserve-symlinks
명령줄 플래그는 Node.js가 실제 경로가 아닌 모듈의 심볼릭 링크 경로를 사용하도록 지시하여 심볼릭 링크된 피어 종속성을 찾을 수 있도록 합니다.
그러나 --preserve-symlinks
를 사용하면 다른 부작용이 발생할 수 있습니다. 특히, 종속성 트리의 여러 위치에서 링크된 심볼릭 링크된 네이티브 모듈은 로드되지 않을 수 있습니다(Node.js는 이를 두 개의 별도 모듈로 인식하고 모듈을 여러 번 로드하려고 시도하여 예외가 발생합니다).
--preserve-symlinks
플래그는 메인 모듈에는 적용되지 않으므로 node --preserve-symlinks node_module/.bin/<foo>
가 작동합니다. 메인 모듈에 동일한 동작을 적용하려면 --preserve-symlinks-main
도 사용하십시오.
--preserve-symlinks-main
추가됨: v10.2.0
주 모듈(require.main
)을 확인하고 캐싱할 때 심볼릭 링크를 유지하도록 모듈 로더에 지시합니다.
이 플래그는 주 모듈이 --preserve-symlinks
가 다른 모든 import에 제공하는 동일한 동작을 선택할 수 있도록 존재합니다. 그러나 이전 Node.js 버전과의 호환성을 위해 별도의 플래그입니다.
--preserve-symlinks-main
은 --preserve-symlinks
를 의미하지 않습니다. 상대 경로를 확인하기 전에 심볼릭 링크를 따르는 것이 바람직하지 않은 경우 --preserve-symlinks
에 추가로 --preserve-symlinks-main
을 사용하십시오.
자세한 내용은 --preserve-symlinks
를 참조하십시오.
-p
, --print "script"
[히스토리]
버전 | 변경 사항 |
---|---|
v5.11.0 | 내장 라이브러리가 이제 미리 정의된 변수로 사용 가능합니다. |
v0.6.4 | 추가됨: v0.6.4 |
-e
와 동일하지만 결과를 출력합니다.
--prof
추가됨: v2.0.0
V8 프로파일러 출력을 생성합니다.
--prof-process
추가됨: v5.2.0
V8 옵션 --prof
를 사용하여 생성된 V8 프로파일러 출력을 처리합니다.
--redirect-warnings=file
추가됨: v8.0.0
stderr에 출력하는 대신 지정된 파일에 프로세스 경고를 씁니다. 파일이 없으면 생성되고, 있으면 추가됩니다. 파일에 경고를 쓰는 동안 오류가 발생하면 대신 stderr에 경고가 쓰입니다.
file
이름은 절대 경로일 수 있습니다. 그렇지 않으면 쓰여질 기본 디렉토리는 --diagnostic-dir
명령줄 옵션에 의해 제어됩니다.
--report-compact
추가됨: v13.12.0, v12.17.0
보고서를 간결한 형식(단일 줄 JSON)으로 작성하여 사람이 읽기 위한 기본 다중 줄 형식보다 로그 처리 시스템에서 더 쉽게 사용할 수 있도록 합니다.
--report-dir=directory
, report-directory=directory
[히스토리]
버전 | 변경 사항 |
---|---|
v13.12.0, v12.17.0 | 이 옵션은 더 이상 실험적이지 않습니다. |
v12.0.0 | --diagnostic-report-directory 에서 --report-directory 로 변경되었습니다. |
v11.8.0 | 추가됨: v11.8.0 |
보고서가 생성될 위치입니다.
--report-exclude-env
추가됨: v23.3.0
--report-exclude-env
가 전달되면 생성된 진단 보고서에 environmentVariables
데이터가 포함되지 않습니다.
--report-exclude-network
추가됨: v22.0.0, v20.13.0
진단 보고서에서 header.networkInterfaces
를 제외합니다. 기본적으로 설정되지 않으며 네트워크 인터페이스가 포함됩니다.
--report-filename=filename
[히스토리]
버전 | 변경 사항 |
---|---|
v13.12.0, v12.17.0 | 이 옵션은 더 이상 실험적이지 않습니다. |
v12.0.0 | --diagnostic-report-filename 에서 --report-filename 으로 변경되었습니다. |
v11.8.0 | 추가됨: v11.8.0 |
보고서가 기록될 파일의 이름입니다.
파일 이름이 'stdout'
또는 'stderr'
로 설정되면 보고서는 각각 프로세스의 stdout 또는 stderr에 기록됩니다.
--report-on-fatalerror
[히스토리]
버전 | 변경 사항 |
---|---|
v14.0.0, v13.14.0, v12.17.0 | 이 옵션은 더 이상 실험적이지 않습니다. |
v12.0.0 | --diagnostic-report-on-fatalerror 에서 --report-on-fatalerror 로 변경되었습니다. |
v11.8.0 | 추가됨: v11.8.0 |
애플리케이션 종료로 이어지는 치명적인 오류(메모리 부족과 같은 Node.js 런타임 내의 내부 오류) 발생 시 보고서가 트리거되도록 합니다. 힙, 스택, 이벤트 루프 상태, 리소스 소비 등 다양한 진단 데이터 요소를 검사하여 치명적인 오류에 대한 이유를 파악하는 데 유용합니다.
--report-on-signal
[히스토리]
버전 | 변경 사항 |
---|---|
v13.12.0, v12.17.0 | 이 옵션은 더 이상 실험적이지 않습니다. |
v12.0.0 | --diagnostic-report-on-signal 에서 --report-on-signal 로 변경되었습니다. |
v11.8.0 | 추가됨: v11.8.0 |
실행 중인 Node.js 프로세스에 지정된(또는 미리 정의된) 신호를 받으면 보고서가 생성되도록 합니다. 보고서를 트리거할 신호는 --report-signal
을 통해 지정됩니다.
--report-signal=signal
[히스토리]
버전 | 변경 사항 |
---|---|
v13.12.0, v12.17.0 | 이 옵션은 더 이상 실험적이지 않습니다. |
v12.0.0 | --diagnostic-report-signal 에서 --report-signal 로 변경되었습니다. |
v11.8.0 | 추가됨: v11.8.0 |
보고서 생성을 위한 신호를 설정하거나 재설정합니다(Windows에서는 지원되지 않음). 기본 신호는 SIGUSR2
입니다.
--report-uncaught-exception
[히스토리]
버전 | 변경 사항 |
---|---|
v18.8.0, v16.18.0 | 처리되지 않은 예외가 처리되면 보고서가 생성되지 않습니다. |
v13.12.0, v12.17.0 | 이 옵션은 더 이상 실험적이지 않습니다. |
v12.0.0 | --diagnostic-report-uncaught-exception 에서 --report-uncaught-exception 으로 변경되었습니다. |
v11.8.0 | 추가됨: v11.8.0 |
처리되지 않은 예외로 인해 프로세스가 종료될 때 보고서가 생성되도록 합니다. 네이티브 스택 및 기타 런타임 환경 데이터와 함께 JavaScript 스택을 검사할 때 유용합니다.
-r
, --require module
추가됨: v1.6.0
시작 시 지정된 모듈을 미리 로드합니다.
require()
의 모듈 해석 규칙을 따릅니다. module
은 파일 경로 또는 Node 모듈 이름일 수 있습니다.
CommonJS 모듈만 지원됩니다. ECMAScript 모듈을 미리 로드하려면 --import
를 사용하십시오. --require
로 미리 로드된 모듈은 --import
로 미리 로드된 모듈보다 먼저 실행됩니다.
모듈은 메인 스레드와 모든 워커 스레드, 포크된 프로세스 또는 클러스터된 프로세스에 미리 로드됩니다.
--run
[히스토리]
버전 | 변경 사항 |
---|---|
v22.3.0 | NODE_RUN_SCRIPT_NAME 환경 변수가 추가되었습니다. |
v22.3.0 | NODE_RUN_PACKAGE_JSON_PATH 환경 변수가 추가되었습니다. |
v22.3.0 | 루트 디렉토리까지 이동하여 명령을 실행할 package.json 파일을 찾고, PATH 환경 변수를 그에 따라 업데이트합니다. |
v22.0.0 | 추가됨: v22.0.0 |
package.json
의 "scripts"
객체에서 지정된 명령을 실행합니다. 누락된 "command"
가 제공되면 사용 가능한 스크립트를 나열합니다.
--run
은 루트 디렉토리까지 이동하여 명령을 실행할 package.json
파일을 찾습니다.
--run
은 현재 디렉토리의 각 상위 디렉토리에 대해 ./node_modules/.bin
을 PATH
앞에 추가하여 여러 node_modules
디렉토리가 있는 다른 폴더의 바이너리를 실행합니다 ( ancestor-folder/node_modules/.bin
이 디렉토리인 경우).
--run
은 관련 package.json
이 포함된 디렉토리에서 명령을 실행합니다.
예를 들어, 다음 명령은 현재 폴더의 package.json
의 test
스크립트를 실행합니다.
$ node --run test
명령에 인수를 전달할 수도 있습니다. --
다음의 모든 인수는 스크립트에 추가됩니다.
$ node --run test -- --verbose
의도적인 제한 사항
node --run
은 npm run
또는 다른 패키지 관리자의 run
명령의 동작과 일치하도록 설계되지 않았습니다. Node.js 구현은 가장 일반적인 사용 사례에 대한 최고 성능에 집중하기 위해 의도적으로 더 제한적입니다. 의도적으로 제외된 다른 run
구현의 일부 기능은 다음과 같습니다.
- 지정된 스크립트 외에
pre
또는post
스크립트 실행 - 패키지 관리자별 환경 변수 정의
환경 변수
--run
을 사용하여 스크립트를 실행할 때 다음 환경 변수가 설정됩니다.
NODE_RUN_SCRIPT_NAME
: 실행 중인 스크립트의 이름입니다. 예를 들어--run
을 사용하여test
를 실행하는 경우 이 변수의 값은test
가 됩니다.NODE_RUN_PACKAGE_JSON_PATH
: 처리 중인package.json
의 경로입니다.
--secure-heap-min=n
추가됨: v15.6.0
--secure-heap
을 사용할 때 --secure-heap-min
플래그는 보안 힙에서 최소 할당량을 지정합니다. 최소값은 2
입니다. 최대값은 --secure-heap
또는 2147483647
중 더 작은 값입니다. 지정된 값은 2의 제곱이어야 합니다.
--secure-heap=n
추가됨: v15.6.0
n
바이트의 OpenSSL 보안 힙을 초기화합니다. 초기화되면 보안 힙은 키 생성 및 기타 작업 중 OpenSSL 내에서 선택된 유형의 할당에 사용됩니다. 이는 예를 들어 포인터 오버런 또는 언더런으로 인한 중요 정보 유출을 방지하는 데 유용합니다.
보안 힙은 고정 크기이며 런타임에 크기를 조정할 수 없으므로 사용하는 경우 모든 애플리케이션 사용을 충족할 만큼 충분히 큰 힙을 선택하는 것이 중요합니다.
지정된 힙 크기는 2의 제곱이어야 합니다. 2보다 작은 값은 보안 힙을 비활성화합니다.
보안 힙은 기본적으로 비활성화되어 있습니다.
보안 힙은 Windows에서 사용할 수 없습니다.
자세한 내용은 CRYPTO_secure_malloc_init
을 참조하십시오.
--snapshot-blob=path
추가됨: v18.8.0
[Stable: 1 - Experimental]
Stable: 1 Stability: 1 - Experimental
--build-snapshot
과 함께 사용하면 --snapshot-blob
은 생성된 스냅샷 블롭이 기록될 경로를 지정합니다. 지정하지 않으면 생성된 블롭은 현재 작업 디렉토리의 snapshot.blob
에 기록됩니다.
--build-snapshot
없이 사용하면 --snapshot-blob
은 애플리케이션 상태를 복원하는 데 사용되는 블롭의 경로를 지정합니다.
스냅샷을 로드할 때 Node.js는 다음을 확인합니다.
일치하지 않으면 Node.js는 스냅샷 로드를 거부하고 상태 코드 1로 종료됩니다.
--test
[이력]
버전 | 변경 사항 |
---|---|
v20.0.0 | 테스트 러너가 이제 안정적입니다. |
v19.2.0, v18.13.0 | 테스트 러너가 이제 감시 모드에서 실행을 지원합니다. |
v18.1.0, v16.17.0 | 추가됨: v18.1.0, v16.17.0 |
Node.js 명령줄 테스트 러너를 시작합니다. 이 플래그는 --watch-path
, --check
, --eval
, --interactive
또는 검사기와 함께 사용할 수 없습니다. 자세한 내용은 명령줄에서 테스트 실행에 대한 설명서를 참조하십시오.
--test-concurrency
추가됨: v21.0.0, v20.10.0, v18.19.0
테스트 러너 CLI가 동시에 실행할 테스트 파일의 최대 수입니다. --experimental-test-isolation
이 'none'
으로 설정된 경우 이 플래그는 무시되고 동시성은 1이 됩니다. 그렇지 않으면 동시성은 기본적으로 os.availableParallelism() - 1
이 됩니다.
--test-coverage-branches=threshold
추가됨: v22.8.0
최소한의 커버된 분기 비율을 요구합니다. 코드 적용 범위가 지정된 임계값에 도달하지 않으면 프로세스는 코드 1
로 종료됩니다.
--test-coverage-exclude
추가됨: v22.5.0
전체 또는 상대 파일 경로와 모두 일치할 수 있는 glob 패턴을 사용하여 코드 적용 범위에서 특정 파일을 제외합니다.
여러 glob 패턴을 제외하려면 이 옵션을 여러 번 지정할 수 있습니다.
--test-coverage-exclude
와 --test-coverage-include
를 모두 제공하는 경우 파일은 적용 범위 보고서에 포함되려면 두 기준을 모두 충족해야 합니다.
기본적으로 일치하는 모든 테스트 파일은 적용 범위 보고서에서 제외됩니다. 이 옵션을 지정하면 기본 동작이 재정의됩니다.
--test-coverage-functions=threshold
추가됨: v22.8.0
최소한의 커버된 함수 비율을 요구합니다. 코드 적용 범위가 지정된 임계값에 도달하지 않으면 프로세스는 코드 1
로 종료됩니다.
--test-coverage-include
추가됨: v22.5.0
절대 경로와 상대 경로 모두 일치시킬 수 있는 glob 패턴을 사용하여 코드 적용 범위에 특정 파일을 포함합니다.
여러 glob 패턴을 포함하려면 이 옵션을 여러 번 지정할 수 있습니다.
--test-coverage-exclude
와 --test-coverage-include
를 모두 제공하는 경우 파일은 적용 범위 보고서에 포함되려면 두 기준을 모두 충족해야 합니다.
--test-coverage-lines=threshold
추가됨: v22.8.0
최소 퍼센트의 적용된 라인을 요구합니다. 코드 적용 범위가 지정된 임계값에 도달하지 않으면 프로세스가 코드 1
로 종료됩니다.
--test-force-exit
추가됨: v22.0.0, v20.14.0
이벤트 루프가 계속 활성화되어 있더라도 알려진 모든 테스트가 실행 완료되면 프로세스를 종료하도록 테스트 러너를 구성합니다.
--test-name-pattern
[히스토리]
버전 | 변경 사항 |
---|---|
v20.0.0 | 테스트 러너가 이제 안정적입니다. |
v18.11.0 | 추가됨: v18.11.0 |
제공된 패턴과 일치하는 이름의 테스트만 실행하도록 테스트 러너를 구성하는 정규 표현식입니다. 자세한 내용은 이름으로 테스트 필터링에 대한 설명서를 참조하십시오.
--test-name-pattern
과 --test-skip-pattern
을 모두 제공하는 경우 테스트는 실행되려면 두 요구 사항을 모두 충족해야 합니다.
--test-only
[히스토리]
버전 | 변경 사항 |
---|---|
v20.0.0 | 테스트 러너가 이제 안정적입니다. |
v18.0.0, v16.17.0 | 추가됨: v18.0.0, v16.17.0 |
only
옵션이 설정된 최상위 테스트만 실행하도록 테스트 러너를 구성합니다. 테스트 격리가 비활성화된 경우에는 이 플래그가 필요하지 않습니다.
--test-reporter
[히스토리]
버전 | 변경 사항 |
---|---|
v20.0.0 | 테스트 러너가 이제 안정적입니다. |
v19.6.0, v18.15.0 | 추가됨: v19.6.0, v18.15.0 |
테스트 실행 시 사용할 테스트 리포터입니다. 자세한 내용은 테스트 리포터에 대한 설명서를 참조하십시오.
--test-reporter-destination
[History]
버전 | 변경 사항 |
---|---|
v20.0.0 | 테스트 러너가 이제 안정적입니다. |
v19.6.0, v18.15.0 | 추가됨: v19.6.0, v18.15.0 |
해당 테스트 리포터의 대상입니다. 자세한 내용은 테스트 리포터에 대한 설명서를 참조하십시오.
--test-shard
추가됨: v20.5.0, v18.19.0
<index>/<total>
형식으로 실행할 테스트 모음 조각입니다. 여기서
index
는 양의 정수이며, 나뉜 부분의 인덱스입니다. total
은 양의 정수이며, 나뉜 부분의 총 개수입니다. 이 명령어는 모든 테스트 파일을 total
개의 동일한 부분으로 나누고, index
부분에 있는 테스트만 실행합니다.
예를 들어, 테스트 모음을 세 부분으로 나누려면 다음을 사용하십시오.
node --test --test-shard=1/3
node --test --test-shard=2/3
node --test --test-shard=3/3
--test-skip-pattern
추가됨: v22.1.0
제공된 패턴과 일치하는 이름의 테스트를 건너뛰도록 테스트 러너를 구성하는 정규 표현식입니다. 자세한 내용은 이름으로 테스트 필터링에 대한 설명서를 참조하십시오.
--test-name-pattern
과 --test-skip-pattern
을 모두 제공하는 경우, 테스트가 실행되려면 두 요구 사항을 모두 충족해야 합니다.
--test-timeout
추가됨: v21.2.0, v20.11.0
테스트 실행이 실패하기 전까지의 시간(밀리초). 지정하지 않으면 하위 테스트는 상위 테스트에서 이 값을 상속받습니다. 기본값은 Infinity
입니다.
--test-update-snapshots
[History]
버전 | 변경 사항 |
---|---|
v23.4.0 | 스냅샷 테스트가 더 이상 실험적이지 않습니다. |
v22.3.0 | 추가됨: v22.3.0 |
스냅샷 테스트에 테스트 러너에서 사용하는 스냅샷 파일을 재생성합니다.
--throw-deprecation
추가됨: v0.11.14
사용 중단에 대한 오류를 throw합니다.
--title=title
추가됨: v10.7.0
시작 시 process.title
을 설정합니다.
--tls-cipher-list=list
추가됨: v4.0.0
대체 기본 TLS 암호 목록을 지정합니다. Node.js가 crypto 지원으로 빌드되어야 합니다(기본값).
--tls-keylog=file
추가됨: v13.2.0, v12.16.0
TLS 키 자료를 파일에 기록합니다. 키 자료는 NSS SSLKEYLOGFILE
형식이며, Wireshark와 같은 소프트웨어를 사용하여 TLS 트래픽을 해독하는 데 사용할 수 있습니다.
--tls-max-v1.2
추가됨: v12.0.0, v10.20.0
tls.DEFAULT_MAX_VERSION
을 'TLSv1.2'로 설정합니다. TLSv1.3 지원을 비활성화하는 데 사용합니다.
--tls-max-v1.3
추가됨: v12.0.0
기본 tls.DEFAULT_MAX_VERSION
을 'TLSv1.3'으로 설정합니다. TLSv1.3 지원을 활성화하는 데 사용합니다.
--tls-min-v1.0
추가됨: v12.0.0, v10.20.0
기본 tls.DEFAULT_MIN_VERSION
을 'TLSv1'로 설정합니다. 이전 TLS 클라이언트 또는 서버와의 호환성을 위해 사용합니다.
--tls-min-v1.1
추가됨: v12.0.0, v10.20.0
기본 tls.DEFAULT_MIN_VERSION
을 'TLSv1.1'로 설정합니다. 이전 TLS 클라이언트 또는 서버와의 호환성을 위해 사용합니다.
--tls-min-v1.2
추가됨: v12.2.0, v10.20.0
기본 tls.DEFAULT_MIN_VERSION
을 'TLSv1.2'로 설정합니다. 이는 12.x 이상의 기본값이지만, 이전 Node.js 버전과의 호환성을 위해 옵션이 지원됩니다.
--tls-min-v1.3
추가됨: v12.0.0
기본 tls.DEFAULT_MIN_VERSION
을 'TLSv1.3'으로 설정합니다. TLSv1.3만큼 안전하지 않은 TLSv1.2 지원을 비활성화하는 데 사용합니다.
--trace-deprecation
추가됨: v0.8.0
사용 중단에 대한 스택 추적을 출력합니다.
--trace-env
추가됨: v23.4.0
현재 Node.js 인스턴스에서 수행된 환경 변수에 대한 모든 액세스 정보를 stderr에 출력합니다. 여기에는 다음이 포함됩니다.
- Node.js가 내부적으로 수행하는 환경 변수 읽기.
process.env.KEY = "SOME VALUE"
형식의 쓰기.process.env.KEY
형식의 읽기.Object.defineProperty(process.env, 'KEY', {...})
형식의 정의.Object.hasOwn(process.env, 'KEY')
,process.env.hasOwnProperty('KEY')
또는'KEY' in process.env
형식의 쿼리.delete process.env.KEY
형식의 삭제....process.env
또는Object.keys(process.env)
형식의 열거.
액세스되는 환경 변수의 이름만 출력됩니다. 값은 출력되지 않습니다.
액세스의 스택 추적을 출력하려면 --trace-env-js-stack
및/또는 --trace-env-native-stack
을 사용하십시오.
--trace-env-js-stack
추가됨: v23.4.0
--trace-env
가 하는 일 외에도, 접근의 JavaScript 스택 추적을 출력합니다.
--trace-env-native-stack
추가됨: v23.4.0
--trace-env
가 하는 일 외에도, 접근의 네이티브 스택 추적을 출력합니다.
--trace-event-categories
추가됨: v7.7.0
--trace-events-enabled
를 사용하여 추적 이벤트 추적이 활성화된 경우 추적해야 하는 범주 목록입니다(쉼표로 구분).
--trace-event-file-pattern
추가됨: v9.8.0
추적 이벤트 데이터의 파일 경로를 지정하는 템플릿 문자열이며 ${rotation}
및 ${pid}
를 지원합니다.
--trace-events-enabled
추가됨: v7.7.0
추적 이벤트 추적 정보 수집을 활성화합니다.
--trace-exit
추가됨: v13.5.0, v12.16.0
환경이 사전에 종료될 때마다(예: process.exit()
호출) 스택 추적을 출력합니다.
--trace-require-module=mode
추가됨: v23.5.0
require()
를 사용하여 ECMAScript 모듈 로드 사용에 대한 정보를 출력합니다.
mode
가 all
이면 모든 사용량이 출력됩니다. mode
가 no-node-modules
이면 node_modules
폴더의 사용량이 제외됩니다.
--trace-sigint
추가됨: v13.9.0, v12.17.0
SIGINT 발생 시 스택 추적을 출력합니다.
--trace-sync-io
추가됨: v2.1.0
이벤트 루프의 첫 번째 턴 이후 동기 I/O가 감지될 때마다 스택 추적을 출력합니다.
--trace-tls
추가됨: v12.2.0
stderr
로 TLS 패킷 추적 정보를 출력합니다. 이는 TLS 연결 문제를 디버깅하는 데 사용할 수 있습니다.
--trace-uncaught
추가됨: v13.1.0
처리되지 않은 예외에 대한 스택 추적을 출력합니다. 일반적으로 Error
생성과 관련된 스택 추적이 출력되지만, 이 옵션을 사용하면 Node.js가 값(반드시 Error
인스턴스일 필요는 없음)을 throw하는 것과 관련된 스택 추적도 출력합니다.
이 옵션을 활성화하면 가비지 수집 동작에 부정적인 영향을 미칠 수 있습니다.
--trace-warnings
추가됨: v6.0.0
프로세스 경고(알림 포함)에 대한 스택 추적을 출력합니다.
--track-heap-objects
추가됨: v2.4.0
힙 스냅샷을 위한 힙 객체 할당 추적.
--unhandled-rejections=mode
[이력]
버전 | 변경 사항 |
---|---|
v15.0.0 | 기본 모드를 throw 로 변경. 이전에는 경고가 발생했습니다. |
v12.0.0, v10.17.0 | 추가됨: v12.0.0, v10.17.0 |
이 플래그를 사용하면 처리되지 않은 리젝션이 발생할 때 어떤 동작을 수행할지 변경할 수 있습니다. 다음 모드 중 하나를 선택할 수 있습니다.
throw
:unhandledRejection
이벤트를 방출합니다. 이 훅이 설정되지 않은 경우, 처리되지 않은 리젝션을 처리되지 않은 예외로 발생시킵니다. 이것이 기본값입니다.strict
: 처리되지 않은 리젝션을 처리되지 않은 예외로 발생시킵니다. 예외가 처리되면unhandledRejection
이벤트가 방출됩니다.warn
:unhandledRejection
훅이 설정되었는지 여부에 관계없이 항상 경고를 트리거하지만, 더 이상 사용되지 않는다는 경고는 출력하지 않습니다.warn-with-error-code
:unhandledRejection
이벤트를 방출합니다. 이 훅이 설정되지 않은 경우, 경고를 트리거하고 프로세스 종료 코드를 1로 설정합니다.none
: 모든 경고를 무시합니다.
명령줄 진입점의 ES 모듈 정적 로딩 단계에서 리젝션이 발생하면 항상 처리되지 않은 예외로 발생시킵니다.
--use-bundled-ca
, --use-openssl-ca
추가됨: v6.11.0
현재 Node.js 버전에서 제공하는 번들된 Mozilla CA 저장소를 사용하거나 OpenSSL의 기본 CA 저장소를 사용합니다. 기본 저장소는 빌드 시 선택할 수 있습니다.
Node.js에서 제공하는 번들된 CA 저장소는 릴리스 시점에 고정된 Mozilla CA 저장소의 스냅샷입니다. 모든 지원되는 플랫폼에서 동일합니다.
OpenSSL 저장소를 사용하면 저장소를 외부에서 수정할 수 있습니다. 대부분의 Linux 및 BSD 배포판의 경우 이 저장소는 배포판 유지 관리자와 시스템 관리자가 관리합니다. OpenSSL CA 저장소 위치는 OpenSSL 라이브러리 구성에 따라 다르지만 환경 변수를 사용하여 런타임에 변경할 수 있습니다.
SSL_CERT_DIR
및 SSL_CERT_FILE
을 참조하십시오.
--use-largepages=mode
추가됨: v13.6.0, v12.17.0
시작 시 Node.js 정적 코드를 큰 메모리 페이지에 다시 매핑합니다. 대상 시스템에서 지원되는 경우 Node.js 정적 코드가 4KiB 페이지 대신 2MiB 페이지로 이동됩니다.
mode
에 대해 다음 값이 유효합니다.
off
: 매핑을 시도하지 않습니다. 기본값입니다.on
: OS에서 지원하는 경우 매핑을 시도합니다. 매핑 실패는 무시되고 표준 오류에 메시지가 출력됩니다.silent
: OS에서 지원하는 경우 매핑을 시도합니다. 매핑 실패는 무시되고 보고되지 않습니다.
--v8-options
추가됨: v0.1.3
V8 명령줄 옵션을 출력합니다.
--v8-pool-size=num
추가됨: v5.10.0
백그라운드 작업 할당에 사용될 V8의 스레드 풀 크기를 설정합니다.
0
으로 설정하면 Node.js는 병렬 처리량 추정치를 기반으로 적절한 스레드 풀 크기를 선택합니다.
병렬 처리량은 주어진 시스템에서 동시에 수행할 수 있는 계산 수를 의미합니다. 일반적으로 CPU 수와 같지만 VM이나 컨테이너와 같은 환경에서는 다를 수 있습니다.
-v
, --version
추가됨: v0.1.3
Node.js 버전을 출력합니다.
--watch
[이력]
버전 | 변경 사항 |
---|---|
v22.0.0, v20.13.0 | 감시 모드가 안정화되었습니다. |
v19.2.0, v18.13.0 | 테스트 실행기가 이제 감시 모드에서 실행되는 것을 지원합니다. |
v18.11.0, v16.19.0 | 추가됨: v18.11.0, v16.19.0 |
감시 모드에서 Node.js를 시작합니다. 감시 모드에서는 감시 대상 파일이 변경되면 Node.js 프로세스가 다시 시작됩니다. 기본적으로 감시 모드는 진입점과 필요하거나 가져온 모든 모듈을 감시합니다. 감시할 경로를 지정하려면 --watch-path
를 사용하십시오.
이 플래그는 --check
, --eval
, --interactive
또는 REPL과 함께 사용할 수 없습니다.
node --watch index.js
--watch-path
[히스토리]
버전 | 변경 사항 |
---|---|
v22.0.0, v20.13.0 | 감시 모드가 안정화되었습니다. |
v18.11.0, v16.19.0 | 추가됨: v18.11.0, v16.19.0 |
감시 모드에서 Node.js를 시작하고 감시할 경로를 지정합니다. 감시 모드일 때 감시되는 경로의 변경 사항은 Node.js 프로세스를 다시 시작합니다. --watch
와 함께 사용하더라도 필요하거나 가져온 모듈의 감시는 꺼집니다.
이 플래그는 --check
, --eval
, --interactive
, --test
또는 REPL과 함께 사용할 수 없습니다.
node --watch-path=./src --watch-path=./tests index.js
이 옵션은 macOS 및 Windows에서만 지원됩니다. 지원하지 않는 플랫폼에서 옵션을 사용하면 ERR_FEATURE_UNAVAILABLE_ON_PLATFORM
예외가 발생합니다.
--watch-preserve-output
추가됨: v19.3.0, v18.13.0
감시 모드에서 프로세스가 다시 시작될 때 콘솔 지우기를 비활성화합니다.
node --watch --watch-preserve-output test.js
--zero-fill-buffers
추가됨: v6.0.0
새로 할당된 모든 Buffer
및 SlowBuffer
인스턴스를 자동으로 0으로 채웁니다.
환경 변수
FORCE_COLOR=[1, 2, 3]
FORCE_COLOR
환경 변수는 ANSI 색상 출력을 활성화하는 데 사용됩니다. 값은 다음과 같을 수 있습니다.
1
,true
또는 빈 문자열''
은 16색 지원을 나타냅니다.2
는 256색 지원을 나타냅니다.3
은 1600만 색 지원을 나타냅니다.
FORCE_COLOR
가 사용되고 지원되는 값으로 설정되면 NO_COLOR
및 NODE_DISABLE_COLORS
환경 변수는 무시됩니다.
다른 모든 값은 색상 출력이 비활성화됩니다.
NODE_COMPILE_CACHE=dir
추가됨: v22.1.0
Node.js 인스턴스에 대한 모듈 컴파일 캐시를 활성화합니다. 자세한 내용은 모듈 컴파일 캐시 설명서를 참조하십시오.
NODE_DEBUG=module[,…]
추가됨: v0.1.32
디버그 정보를 출력해야 하는 코어 모듈의 ','로 구분된 목록입니다.
NODE_DEBUG_NATIVE=module[,…]
','로 구분된 코어 C++ 모듈의 목록으로, 디버그 정보를 출력해야 합니다.
NODE_DISABLE_COLORS=1
추가됨: v0.3.0
설정되면 REPL에서 색상이 사용되지 않습니다.
NODE_DISABLE_COMPILE_CACHE=1
추가됨: v22.8.0
Node.js 인스턴스에 대한 모듈 컴파일 캐시를 비활성화합니다. 자세한 내용은 모듈 컴파일 캐시 설명서를 참조하십시오.
NODE_EXTRA_CA_CERTS=file
추가됨: v7.3.0
설정되면 잘 알려진 "루트" CA(VeriSign 등)가 file
의 추가 인증서로 확장됩니다. 파일은 PEM 형식의 하나 이상의 신뢰할 수 있는 인증서로 구성되어야 합니다. 파일이 누락되었거나 잘못 형성된 경우 process.emitWarning()
을 사용하여 메시지가 (한 번) 방출되지만, 다른 오류는 무시됩니다.
ca
옵션 속성이 TLS 또는 HTTPS 클라이언트 또는 서버에 대해 명시적으로 지정된 경우 잘 알려진 인증서나 추가 인증서가 사용되지 않습니다.
node
가 setuid 루트로 실행되거나 Linux 파일 기능이 설정된 경우 이 환경 변수는 무시됩니다.
NODE_EXTRA_CA_CERTS
환경 변수는 Node.js 프로세스가 처음 시작될 때만 읽힙니다. process.env.NODE_EXTRA_CA_CERTS
를 사용하여 런타임에 값을 변경해도 현재 프로세스에는 영향을 미치지 않습니다.
NODE_ICU_DATA=file
추가됨: v0.11.15
ICU(Intl
객체) 데이터의 데이터 경로입니다. small-icu 지원으로 컴파일될 때 링크된 데이터를 확장합니다.
NODE_NO_WARNINGS=1
추가됨: v6.11.0
1
로 설정되면 프로세스 경고가 무시됩니다.
NODE_OPTIONS=options...
추가됨: v8.0.0
명령줄 옵션의 공백으로 구분된 목록입니다. options...
는 명령줄 옵션보다 먼저 해석되므로 명령줄 옵션은 options...
의 내용을 재정의하거나 추가합니다. -p
또는 스크립트 파일과 같이 환경에서 허용되지 않는 옵션이 사용되면 Node.js는 오류와 함께 종료됩니다.
옵션 값에 공백이 포함된 경우 큰따옴표를 사용하여 이스케이프할 수 있습니다.
NODE_OPTIONS='--require "./my path/file.js"'
명령줄 옵션으로 전달된 싱글톤 플래그는 NODE_OPTIONS
에 전달된 동일한 플래그를 재정의합니다.
# 검사기는 5555 포트에서 사용할 수 있습니다. {#node_options=options}
NODE_OPTIONS='--inspect=localhost:4444' node --inspect=localhost:5555
여러 번 전달할 수 있는 플래그는 NODE_OPTIONS
인스턴스가 먼저 전달된 다음 명령줄 인스턴스가 그 뒤에 전달된 것처럼 처리됩니다.
NODE_OPTIONS='--require "./a.js"' node --require "./b.js"
# 다음과 같습니다. {#the-inspector-will-be-available-on-port-5555}
node --require "./a.js" --require "./b.js"
허용되는 Node.js 옵션은 다음 목록에 있습니다. 옵션이 --XX 및 --no-XX 변형을 모두 지원하는 경우 모두 지원되지만 목록에는 하나만 포함됩니다.
--allow-addons
--allow-child-process
--allow-fs-read
--allow-fs-write
--allow-wasi
--allow-worker
--conditions
,-C
--diagnostic-dir
--disable-proto
--disable-warning
--disable-wasm-trap-handler
--dns-result-order
--enable-fips
--enable-network-family-autoselection
--enable-source-maps
--entry-url
--experimental-abortcontroller
--experimental-async-context-frame
--experimental-detect-module
--experimental-eventsource
--experimental-import-meta-resolve
--experimental-json-modules
--experimental-loader
--experimental-modules
--experimental-permission
--experimental-print-required-tla
--experimental-require-module
--experimental-shadow-realm
--experimental-specifier-resolution
--experimental-strip-types
--experimental-top-level-await
--experimental-transform-types
--experimental-vm-modules
--experimental-wasi-unstable-preview1
--experimental-wasm-modules
--experimental-webstorage
--force-context-aware
--force-fips
--force-node-api-uncaught-exceptions-policy
--frozen-intrinsics
--heap-prof-dir
--heap-prof-interval
--heap-prof-name
--heap-prof
--heapsnapshot-near-heap-limit
--heapsnapshot-signal
--http-parser
--icu-data-dir
--import
--input-type
--insecure-http-parser
--inspect-brk
--inspect-port
,--debug-port
--inspect-publish-uid
--inspect-wait
--inspect
--localstorage-file
--max-http-header-size
--napi-modules
--network-family-autoselection-attempt-timeout
--no-addons
--no-deprecation
--no-experimental-global-navigator
--no-experimental-repl-await
--no-experimental-sqlite
--no-experimental-websocket
--no-extra-info-on-fatal-exception
--no-force-async-hooks-checks
--no-global-search-paths
--no-network-family-autoselection
--no-warnings
--node-memory-debug
--openssl-config
--openssl-legacy-provider
--openssl-shared-config
--pending-deprecation
--permission
--preserve-symlinks-main
--preserve-symlinks
--prof-process
--redirect-warnings
--report-compact
--report-dir
,--report-directory
--report-exclude-env
--report-exclude-network
--report-filename
--report-on-fatalerror
--report-on-signal
--report-signal
--report-uncaught-exception
--require
,-r
--secure-heap-min
--secure-heap
--snapshot-blob
--test-coverage-branches
--test-coverage-exclude
--test-coverage-functions
--test-coverage-include
--test-coverage-lines
--test-name-pattern
--test-only
--test-reporter-destination
--test-reporter
--test-shard
--test-skip-pattern
--throw-deprecation
--title
--tls-cipher-list
--tls-keylog
--tls-max-v1.2
--tls-max-v1.3
--tls-min-v1.0
--tls-min-v1.1
--tls-min-v1.2
--tls-min-v1.3
--trace-deprecation
--trace-env-js-stack
--trace-env-native-stack
--trace-env
--trace-event-categories
--trace-event-file-pattern
--trace-events-enabled
--trace-exit
--trace-require-module
--trace-sigint
--trace-sync-io
--trace-tls
--trace-uncaught
--trace-warnings
--track-heap-objects
--unhandled-rejections
--use-bundled-ca
--use-largepages
--use-openssl-ca
--v8-pool-size
--watch-path
--watch-preserve-output
--watch
--zero-fill-buffers
허용되는 V8 옵션은 다음과 같습니다.
--abort-on-uncaught-exception
--disallow-code-generation-from-strings
--enable-etw-stack-walking
--expose-gc
--interpreted-frames-native-stack
--jitless
--max-old-space-size
--max-semi-space-size
--perf-basic-prof-only-functions
--perf-basic-prof
--perf-prof-unwinding-info
--perf-prof
--stack-trace-limit
--perf-basic-prof-only-functions
, --perf-basic-prof
, --perf-prof-unwinding-info
및 --perf-prof
는 Linux에서만 사용할 수 있습니다.
--enable-etw-stack-walking
은 Windows에서만 사용할 수 있습니다.
NODE_PATH=path[:…]
추가됨: v0.1.32
모듈 검색 경로 앞에 추가되는 ':'
로 구분된 디렉토리 목록입니다.
Windows에서는 ';'
로 구분된 목록입니다.
NODE_PENDING_DEPRECATION=1
추가됨: v8.0.0
1
로 설정되면 보류 중인 사용 중단 경고를 방출합니다.
보류 중인 사용 중단은 일반적으로 런타임 사용 중단과 동일하지만, 기본적으로 사용되지 않도록 설정되어 있으며, --pending-deprecation
명령줄 플래그 또는 NODE_PENDING_DEPRECATION=1
환경 변수가 설정되지 않으면 방출되지 않는다는 점이 다릅니다. 보류 중인 사용 중단은 개발자가 사용 중단된 API 사용을 감지하는 데 활용할 수 있는 일종의 선택적 "조기 경고" 메커니즘을 제공하는 데 사용됩니다.
NODE_PENDING_PIPE_INSTANCES=instances
파이프 서버가 연결을 기다리는 동안 보류 중인 파이프 인스턴스 핸들의 수를 설정합니다. 이 설정은 Windows에만 적용됩니다.
NODE_PRESERVE_SYMLINKS=1
추가됨: v7.1.0
1
로 설정되면 모듈 로더가 모듈을 확인하고 캐싱할 때 심볼릭 링크를 유지하도록 지시합니다.
NODE_REDIRECT_WARNINGS=file
추가됨: v8.0.0
설정되면 프로세스 경고는 stderr에 출력하는 대신 지정된 파일에 방출됩니다. 파일이 없으면 생성되고, 있으면 추가됩니다. 경고를 파일에 쓰는 동안 오류가 발생하면 대신 stderr에 경고가 기록됩니다. 이것은 --redirect-warnings=file
명령줄 플래그를 사용하는 것과 같습니다.
NODE_REPL_EXTERNAL_MODULE=file
[히스토리]
버전 | 변경 사항 |
---|---|
v22.3.0, v20.16.0 | 임베더에 대해 이 환경 변수를 kDisableNodeOptionsEnv와 함께 사용할 수 없도록 제거했습니다. |
v13.0.0, v12.16.0 | 추가됨: v13.0.0, v12.16.0 |
기본 제공 REPL 대신 로드될 Node.js 모듈의 경로입니다. 이 값을 빈 문자열(''
)로 재정의하면 기본 제공 REPL이 사용됩니다.
NODE_REPL_HISTORY=file
추가됨: v3.0.0
영구 REPL 히스토리를 저장하는 데 사용되는 파일의 경로입니다. 기본 경로는 ~/.node_repl_history
이며, 이 변수에 의해 재정의됩니다. 값을 빈 문자열(''
또는 ' '
)로 설정하면 영구 REPL 히스토리가 비활성화됩니다.
NODE_SKIP_PLATFORM_CHECK=value
추가됨: v14.5.0
value
가 '1'
이면 Node.js 시작 시 지원되는 플랫폼에 대한 확인이 건너뜁니다. Node.js가 제대로 실행되지 않을 수 있습니다. 지원되지 않는 플랫폼에서 발생하는 문제는 수정되지 않습니다.
NODE_TEST_CONTEXT=value
value
가 'child'
이면 테스트 리포터 옵션이 재정의되고 테스트 출력이 TAP 형식으로 stdout으로 전송됩니다. 다른 값이 제공되면 Node.js는 사용되는 리포터 형식이나 안정성에 대해 보장하지 않습니다.
NODE_TLS_REJECT_UNAUTHORIZED=value
value
가 '0'
이면 TLS 연결에 대한 인증서 확인이 비활성화됩니다. 이렇게 하면 TLS와 HTTPS가 안전하지 않게 됩니다. 이 환경 변수의 사용은 강력히 권장하지 않습니다.
NODE_V8_COVERAGE=dir
설정되면 Node.js는 인수로 제공된 디렉토리에 V8 JavaScript 코드 적용 범위 및 소스 맵 데이터를 출력하기 시작합니다(적용 범위 정보는 coverage
접두사가 있는 파일에 JSON으로 작성됨).
NODE_V8_COVERAGE
는 하위 프로세스로 자동으로 전파되므로 child_process.spawn()
함수 계열을 호출하는 애플리케이션을 더 쉽게 계측할 수 있습니다. 전파를 방지하려면 NODE_V8_COVERAGE
를 빈 문자열로 설정할 수 있습니다.
NO_COLOR=<any>
NO_COLOR
는 NODE_DISABLE_COLORS
의 별칭입니다. 환경 변수의 값은 임의적입니다.
적용 범위 출력 {#no_color=<any>}
적용 범위는 최상위 키 result
에 ScriptCoverage 객체의 배열로 출력됩니다.
{
"result": [
{
"scriptId": "67",
"url": "internal/tty.js",
"functions": []
}
]
}
소스 맵 캐시
[Stable: 1 - Experimental]
Stable: 1 Stability: 1 - 실험적
소스 맵 데이터가 발견되면 JSON 적용 범위 객체의 최상위 키 source-map-cache
에 추가됩니다.
source-map-cache
는 키가 소스 맵이 추출된 파일을 나타내고 값이 원시 소스 맵 URL(키 url
에 있음), 구문 분석된 소스 맵 v3 정보(키 data
에 있음) 및 소스 파일의 줄 길이(키 lineLengths
에 있음)를 포함하는 객체입니다.
{
"result": [
{
"scriptId": "68",
"url": "file:///absolute/path/to/source.js",
"functions": []
}
],
"source-map-cache": {
"file:///absolute/path/to/source.js": {
"url": "./path-to-map.json",
"data": {
"version": 3,
"sources": ["file:///absolute/path/to/original.js"],
"names": ["Foo", "console", "info"],
"mappings": "MAAMA,IACJC,YAAaC",
"sourceRoot": "./"
},
"lineLengths": [13, 62, 38, 27]
}
}
}
OPENSSL_CONF=file
추가됨: v6.11.0
시작 시 OpenSSL 구성 파일을 로드합니다. 다른 용도 외에도, Node.js가 ./configure --openssl-fips
로 빌드된 경우 FIPS 준수 암호화를 활성화하는 데 사용할 수 있습니다.
--openssl-config
명령줄 옵션을 사용하는 경우 환경 변수는 무시됩니다.
SSL_CERT_DIR=dir
추가됨: v7.7.0
--use-openssl-ca
가 활성화된 경우, 이는 OpenSSL의 신뢰할 수 있는 인증서가 포함된 디렉터리를 재정의하고 설정합니다.
자식 환경이 명시적으로 설정되지 않은 경우 이 환경 변수는 모든 자식 프로세스에 상속되며, 자식 프로세스가 OpenSSL을 사용하는 경우 node와 동일한 CA를 신뢰하게 될 수 있습니다.
SSL_CERT_FILE=file
추가됨: v7.7.0
--use-openssl-ca
가 활성화된 경우, 이는 OpenSSL의 신뢰할 수 있는 인증서가 포함된 파일을 재정의하고 설정합니다.
자식 환경이 명시적으로 설정되지 않은 경우 이 환경 변수는 모든 자식 프로세스에 상속되며, 자식 프로세스가 OpenSSL을 사용하는 경우 node와 동일한 CA를 신뢰하게 될 수 있습니다.
TZ
[히스토리]
버전 | 변경 사항 |
---|---|
v16.2.0 | process.env.TZ = 를 사용하여 TZ 변수를 변경하면 Windows에서도 시간대가 변경됩니다. |
v13.0.0 | process.env.TZ = 를 사용하여 TZ 변수를 변경하면 POSIX 시스템에서도 시간대가 변경됩니다. |
v0.0.1 | 추가됨: v0.0.1 |
TZ
환경 변수는 시간대 구성을 지정하는 데 사용됩니다.
Node.js는 다른 환경에서 TZ
가 처리되는 다양한 방법을 모두 지원하지 않지만, 기본 시간대 ID (예: 'Etc/UTC'
, 'Europe/Paris'
, 또는 'America/New_York'
)는 지원합니다. 다른 약어나 별칭을 몇 가지 더 지원할 수 있지만, 이러한 것은 강력하게 권장하지 않으며 보장되지 않습니다.
$ TZ=Europe/Dublin node -pe "new Date().toString()"
Wed May 12 2021 20:30:48 GMT+0100 (Irish Standard Time)
UV_THREADPOOL_SIZE=size
libuv의 스레드풀에서 사용되는 스레드 수를 size
개로 설정합니다.
Node.js는 가능하면 비동기 시스템 API를 사용하지만, 존재하지 않는 경우 libuv의 스레드풀을 사용하여 동기 시스템 API 기반의 비동기 노드 API를 만듭니다. 스레드풀을 사용하는 Node.js API는 다음과 같습니다.
- 파일 감시기 API 및 명시적으로 동기인 API를 제외한 모든
fs
API crypto.pbkdf2()
,crypto.scrypt()
,crypto.randomBytes()
,crypto.randomFill()
,crypto.generateKeyPair()
와 같은 비동기 암호화 APIdns.lookup()
- 명시적으로 동기인 API를 제외한 모든
zlib
API
libuv의 스레드풀은 크기가 고정되어 있으므로, 어떤 이유로든 이러한 API 중 하나가 오랜 시간이 걸리면 libuv의 스레드풀에서 실행되는 다른 (겉보기에는 관련 없는) API의 성능이 저하됩니다. 이 문제를 완화하기 위해 'UV_THREADPOOL_SIZE'
환경 변수를 4
(현재 기본값)보다 큰 값으로 설정하여 libuv의 스레드풀 크기를 늘리는 것이 하나의 잠재적인 해결책입니다. 그러나 process.env.UV_THREADPOOL_SIZE=size
를 사용하여 프로세스 내부에서 이를 설정하는 것은 스레드풀이 사용자 코드가 실행되기 훨씬 전에 런타임 초기화의 일부로 생성되었을 수 있으므로 작동이 보장되지 않습니다. 자세한 내용은 libuv 스레드풀 문서를 참조하십시오.
유용한 V8 옵션
V8에는 자체 CLI 옵션 세트가 있습니다. node
에 제공되는 모든 V8 CLI 옵션은 V8에 전달되어 처리됩니다. V8의 옵션은 안정성이 보장되지 않습니다. V8 팀 자체에서도 이를 공식 API의 일부로 간주하지 않으며 언제든지 변경할 권리를 보유합니다. 마찬가지로 Node.js 안정성 보장의 적용 대상이 아닙니다. V8 옵션의 대부분은 V8 개발자에게만 관심이 있습니다. 그럼에도 불구하고 Node.js에 널리 적용 가능한 V8 옵션 세트가 있으며 여기에 설명되어 있습니다.
--abort-on-uncaught-exception
--disallow-code-generation-from-strings
--enable-etw-stack-walking
--expose-gc
--harmony-shadow-realm
--interpreted-frames-native-stack
--jitless
--max-old-space-size=SIZE
(MiB 단위)
V8의 오래된 메모리 영역의 최대 메모리 크기를 설정합니다. 메모리 소비량이 한계에 가까워지면 V8은 사용되지 않는 메모리를 확보하기 위해 가비지 컬렉션에 더 많은 시간을 할애합니다.
2GiB 메모리를 가진 시스템에서는 다른 용도로 메모리를 남겨두고 스와핑을 방지하기 위해 이 값을 1536(1.5GiB)으로 설정하는 것을 고려하십시오.
node --max-old-space-size=1536 index.js
--max-semi-space-size=SIZE
(MiB 단위)
V8의 스캐빈지 가비지 컬렉터에 대한 최대 세미스페이스 크기를 MiB(메비바이트) 단위로 설정합니다. 세미스페이스의 최대 크기를 늘리면 메모리 소비량이 증가하는 대신 Node.js의 처리량이 향상될 수 있습니다.
V8의 세미스페이스 크기는 힙의 young generation 크기의 1/3입니다(YoungGenerationSizeFromSemiSpaceSize
참조). 따라서 세미스페이스에 1MiB를 증가시키면 세 개의 개별 세미스페이스 각각에 적용되어 힙 크기가 3MiB 증가합니다. 처리량 향상은 작업량에 따라 다릅니다(#42511 참조).
기본값은 메모리 제한에 따라 달라집니다. 예를 들어, 메모리 제한이 512MiB인 64비트 시스템에서는 세미스페이스의 최대 크기가 기본적으로 1MiB입니다. 메모리 제한이 2GiB 이하인 경우 64비트 시스템에서 세미스페이스의 최대 크기 기본값은 16MiB 미만입니다.
애플리케이션에 가장 적합한 구성을 얻으려면 애플리케이션에 대한 벤치마크를 실행할 때 다양한 max-semi-space-size
값을 시도해야 합니다.
예를 들어, 64비트 시스템에서 벤치마크를 수행합니다.
for MiB in 16 32 64 128; do
node --max-semi-space-size=$MiB index.js
done
--perf-basic-prof
--perf-basic-prof-only-functions
--perf-prof
--perf-prof-unwinding-info
--prof
--security-revert
--stack-trace-limit=limit
오류의 스택 추적에서 수집할 스택 프레임의 최대 개수입니다. 0으로 설정하면 스택 추적 수집이 비활성화됩니다. 기본값은 10입니다.
node --stack-trace-limit=12 -p -e "Error.stackTraceLimit" # 12 출력