Skip to content

명령줄 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.0Node.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

[안정성: 1 - 실험적]

안정성: 1 안정성: 1.1 - 적극적인 개발 중

권한 모델을 사용할 때, 프로세스는 기본적으로 네이티브 애드온을 사용할 수 없습니다. 사용자가 Node.js를 시작할 때 명시적으로 --allow-addons 플래그를 전달하지 않으면 이러한 시도는 ERR_DLOPEN_DISABLED를 throw합니다.

예시:

js
// 네이티브 애드온을 require하려고 시도합니다.
require('nodejs-addon-example')
bash
$ 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

[안정성: 1 - 실험적]

안정성: 1 안정성: 1.1 - 적극적인 개발 중

권한 모델을 사용할 때, 프로세스는 기본적으로 자식 프로세스를 생성할 수 없습니다. 사용자가 Node.js를 시작할 때 --allow-child-process 플래그를 명시적으로 전달하지 않으면 이러한 시도는 ERR_ACCESS_DENIED를 throw합니다.

예시:

js
const childProcess = require('node:child_process')
// 권한 우회 시도
childProcess.spawn('node', ['-e', 'require("fs").writeFileSync("/new-file", "example")'])
bash
$ 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

[안정성: 2 - 안정적]

안정성: 2 안정성: 2 - 안정적입니다.

이 플래그는 권한 모델을 사용하여 파일 시스템 읽기 권한을 구성합니다.

--allow-fs-read 플래그에 대한 유효한 인수는 다음과 같습니다.

  • * - 모든 FileSystemRead 작업을 허용합니다.
  • 여러 개의 --allow-fs-read 플래그를 사용하여 여러 경로를 허용할 수 있습니다. 예: --allow-fs-read=/folder1/ --allow-fs-read=/folder1/

예시는 파일 시스템 권한 문서에서 확인할 수 있습니다.

초기화 모듈도 허용되어야 합니다. 다음 예를 참조하십시오.

bash
$ 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 모듈에 대한 액세스 권한이 있어야 합니다.

bash
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

[안정적: 2 - 안정적]

안정적: 2 안정성: 2 - 안정적입니다.

이 플래그는 권한 모델을 사용하여 파일 시스템 쓰기 권한을 구성합니다.

--allow-fs-write 플래그에 대한 유효한 인수는 다음과 같습니다.

  • * - 모든 FileSystemWrite 작업을 허용합니다.
  • 여러 개의 --allow-fs-write 플래그를 사용하여 여러 경로를 허용할 수 있습니다. 예: --allow-fs-write=/folder1/ --allow-fs-write=/folder1/

쉼표(,)로 구분된 경로는 더 이상 허용되지 않습니다. 쉼표를 포함하는 단일 플래그를 전달하면 경고가 표시됩니다.

예시는 파일 시스템 권한 문서에서 확인할 수 있습니다.

--allow-wasi

추가됨: v22.3.0, v20.16.0

[안정적: 1 - 실험적]

안정적: 1 안정성: 1.1 - 적극적인 개발 중

권한 모델을 사용하는 경우, 프로세스는 기본적으로 WASI 인스턴스를 생성할 수 없습니다. 보안상의 이유로, 사용자가 메인 Node.js 프로세스에 --allow-wasi 플래그를 명시적으로 전달하지 않는 한, 호출은 ERR_ACCESS_DENIED를 throw합니다.

예시:

js
const { WASI } = require('node:wasi')
// 권한 우회 시도
new WASI({
  version: 'preview1',
  // 전체 파일 시스템 마운트 시도
  preopens: {
    '/': '/',
  },
})
bash
$ 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

[안정적: 1 - 실험적]

안정적: 1 안정성: 1.1 - 적극적인 개발 중

권한 모델을 사용하는 경우, 프로세스는 기본적으로 작업자 스레드를 생성할 수 없습니다. 보안상의 이유로, 사용자가 메인 Node.js 프로세스에 --allow-worker 플래그를 명시적으로 전달하지 않는 한, 호출은 ERR_ACCESS_DENIED를 throw합니다.

예시:

js
const { Worker } = require('node:worker_threads')
// 권한 우회 시도
new Worker(__filename)
bash
$ 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

[안정성: 1 - 실험적]

안정성: 1 안정성: 1 - 실험적

프로세스가 종료될 때 스냅샷 블롭을 생성하고 디스크에 기록합니다. 나중에 --snapshot-blob을 사용하여 로드할 수 있습니다.

스냅샷을 빌드할 때 --snapshot-blob이 지정되지 않으면 생성된 블롭은 기본적으로 현재 작업 디렉토리의 snapshot.blob에 기록됩니다. 그렇지 않으면 --snapshot-blob으로 지정된 경로에 기록됩니다.

bash
$ 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를 사용하면 스냅샷 빌드 시점에 진입점을 지정하여 역직렬화 시 추가 진입 스크립트가 필요 없도록 할 수 있습니다.

bash
$ 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

[안정성: 1 - 실험적]

안정성: 1 안정성: 1 - 실험적

스냅샷 생성 동작을 구성하는 JSON 구성 파일의 경로를 지정합니다.

현재 다음 옵션이 지원됩니다.

  • builder <string> 필수. --build-snapshotbuilder를 기본 스크립트 이름으로 전달한 것처럼 스냅샷을 빌드하기 전에 실행되는 스크립트의 이름을 제공합니다.
  • 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 자동 완성 스크립트를 출력합니다.

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" 해결 방법을 사용하여 모듈을 실행하려면 다음과 같이 합니다.

bash
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이 됩니다.

bash
$ 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

[안정적: 2 - 안정적]

안정적: 2 안정성: 2 - 안정적

--cpu-prof에 의해 생성된 CPU 프로파일의 샘플링 간격을 마이크로초 단위로 지정합니다. 기본값은 1000마이크로초입니다.

--cpu-prof-name

[히스토리]

버전변경 사항
v22.4.0, v20.16.0--cpu-prof 플래그가 이제 안정화되었습니다.
v12.0.0추가됨: v12.0.0

[안정적: 2 - 안정적]

안정적: 2 안정성: 2 - 안정적

--cpu-prof에 의해 생성된 CPU 프로파일의 파일 이름을 지정합니다.

--diagnostic-dir=directory

모든 진단 출력 파일이 작성되는 디렉토리를 설정합니다. 기본값은 현재 작업 디렉토리입니다.

다음의 기본 출력 디렉토리에 영향을 미칩니다.

--disable-proto=mode

추가됨: v13.12.0, v12.17.0

Object.prototype.__proto__ 속성을 비활성화합니다. modedelete이면 속성이 완전히 제거됩니다. modethrow이면 속성에 대한 액세스는 ERR_PROTO_ACCESS 코드를 가진 예외를 throw합니다.

--disable-warning=code-or-type

[안정적: 1 - 실험적]

안정적: 1 안정성: 1.1 - 적극적인 개발 중

추가됨: v21.3.0, v20.11.0

code 또는 type으로 특정 프로세스 경고를 비활성화합니다.

process.emitWarning()에서 발생하는 경고에는 codetype이 포함될 수 있습니다. 이 옵션은 일치하는 code 또는 type을 가진 경고를 발생시키지 않습니다.

deprecated 경고 목록.

Node.js 코어 경고 유형은 DeprecationWarningExperimentalWarning입니다.

예를 들어, 다음 스크립트는 node --disable-warning=DEP0025로 실행될 때 DEP0025 require('node:sys')를 발생시키지 않습니다.

js
import sys from 'node:sys'
js
const sys = require('node:sys')

예를 들어, 다음 스크립트는 DEP0025 require('node:sys')를 발생시키지만, node --disable-warning=ExperimentalWarning으로 실행될 때는 모든 Experimental Warning(예: <=v21의 ExperimentalWarning: vm.measureMemory는 실험적인 기능입니다)을 발생시키지 않습니다.

js
import sys from 'node:sys'
import vm from 'node:vm'

vm.measureMemory()
js
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를 실행할 수 없으며 메모리 부족 오류가 발생합니다.

bash
$ 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

문자열에서 코드를 생성하는 evalnew Function과 같은 내장 언어 기능이 예외를 throw하도록 합니다. 이는 Node.js node:vm 모듈에는 영향을 미치지 않습니다.

--dns-result-order=order

[히스토리]

버전변경 사항
v22.1.0, v20.13.0ipv6first 지원
v17.0.0기본값을 verbatim으로 변경
v16.4.0, v14.18.0추가됨: v16.4.0, v14.18.0

dns.lookup()dnsPromises.lookup()order 기본값을 설정합니다. 값은 다음과 같을 수 있습니다.

  • ipv4first: 기본 orderipv4first로 설정합니다.
  • ipv6first: 기본 orderipv6first로 설정합니다.
  • verbatim: 기본 orderverbatim으로 설정합니다.

기본값은 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의 결과를 호출하고 반환하십시오.

js
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

[안정적: 1 - 실험적]

안정적: 1 안정성: 1 - 실험적

사용되는 경우 Node.js는 진입점을 경로가 아닌 URL로 해석합니다.

ECMAScript 모듈 해석 규칙을 따릅니다.

URL의 쿼리 매개변수 또는 해시는 import.meta.url을 통해 액세스할 수 있습니다.

bash
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

[안정성: 1 - 실험적]

안정성: 1 안정성: 1.1 - 적극 개발 중

[히스토리]

버전변경 사항
v21.7.0, v20.12.0여러 줄 값 지원 추가
v20.6.0추가됨: v20.6.0

현재 디렉토리를 기준으로 파일에서 환경 변수를 로드하여 process.env에서 애플리케이션이 사용할 수 있도록 합니다. NODE_OPTIONS와 같은 Node.js를 구성하는 환경 변수는 파싱되어 적용됩니다. 환경과 파일에 동일한 변수가 정의되어 있는 경우 환경의 값이 우선합니다.

여러 개의 --env-file 인수를 전달할 수 있습니다. 이후 파일은 이전 파일에 정의된 기존 변수를 덮어씁니다.

파일이 존재하지 않으면 오류가 발생합니다.

bash
node --env-file=.env --env-file=.development.env index.js

파일 형식은 환경 변수 이름과 값의 키-값 쌍이 =로 구분된 한 줄이어야 합니다.

text
PORT=3000

# 이후의 텍스트는 주석으로 처리됩니다.

text
# 이것은 주석입니다 {#--env-file=config}
PORT=3000 # 이것도 주석입니다

값은 다음 따옴표로 시작하고 끝날 수 있습니다: ```, "또는'. 값에서 제거됩니다.

text
USERNAME="nodejs" # 값으로 `nodejs`가 됩니다.

여러 줄 값이 지원됩니다.

text
MULTI_LINE="THIS IS
A MULTILINE"
# 값으로 `THIS IS\nA MULTILINE`이 됩니다. {#this-is-a-comment}

키 앞의 export 키워드는 무시됩니다.

text
export USERNAME="nodejs" # 값으로 `nodejs`가 됩니다.

존재하지 않을 수 있는 파일에서 환경 변수를 로드하려면 --env-file-if-exists 플래그를 대신 사용할 수 있습니다.

-e, --eval "script" {#will-result-in-this-is\na-multiline-as-the-value}

[이력]

버전변경 사항
v22.6.0Eval이 이제 실험적인 형식 제거를 지원합니다.
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

[안정성: 1 - 실험적]

안정성: 1 안정성: 1 - 실험적

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을 지정합니다. moduleimport 지정자로 허용되는 모든 문자열일 수 있습니다.

--experimental-network-inspection

추가됨: v22.6.0, v20.18.0

[안정성: 1 - 실험적]

안정성: 1 안정성: 1 - 실험적

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

[안정성: 1 - 실험적]

안정성: 1 안정성: 1.1 - 활성 개발 중

require()에서 동기 ES 모듈 그래프 로딩을 지원합니다.

require()를 사용하여 ECMAScript 모듈 로딩을 참조하십시오.

--experimental-sea-config

추가됨: v20.0.0

[안정성: 1 - 실험적]

안정성: 1 안정성: 1 - 실험적

이 플래그를 사용하여 Node.js 바이너리에 삽입하여 단일 실행 파일 애플리케이션을 생성할 수 있는 블롭을 생성합니다. 자세한 내용은 이 구성에 대한 설명서를 참조하십시오.

--experimental-shadow-realm

추가됨: v19.0.0, v18.13.0

ShadowRealm 지원을 활성화하려면 이 플래그를 사용합니다.

--experimental-strip-types

추가됨: v22.6.0

[안정성: 1 - 실험적]

안정성: 1 안정성: 1.1 - 활발한 개발 중

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

[안정성: 1 - 실험적]

안정성: 1 안정성: 1.0 - 초기 개발 단계

테스트 실행기에서 사용되는 테스트 격리 유형을 구성합니다. mode'process'이면 각 테스트 파일은 별도의 하위 프로세스에서 실행됩니다. mode'none'이면 모든 테스트 파일은 테스트 실행기와 같은 프로세스에서 실행됩니다. 기본 격리 모드는 'process'입니다. --test 플래그가 없는 경우 이 플래그는 무시됩니다. 자세한 내용은 테스트 실행기 실행 모델 섹션을 참조하십시오.

--experimental-test-module-mocks

추가됨: v22.3.0, v20.18.0

[안정성: 1 - 실험적]

안정성: 1 안정성: 1.0 - 초기 개발 단계

테스트 실행기에서 모듈 모킹을 활성화합니다.

--experimental-transform-types

추가됨: v22.7.0

[안정성: 1 - 실험적]

안정성: 1 안정성: 1.1 - 활발한 개발 중

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.0WASI가 기본적으로 활성화되어 이 옵션이 더 이상 필요하지 않지만, 여전히 전달할 수 있습니다.
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

[안정성: 1 - 실험적]

안정성: 1 안정성: 1 - 실험적. 이 플래그는 V8에서 상속되었으며 상위에서 변경될 수 있습니다.

이 플래그는 V8에서 gc 확장을 노출합니다.

js
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

ArrayObject와 같은 실험적인 고정 내장 객체를 활성화합니다.

루트 컨텍스트만 지원됩니다. 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이 됩니다.

bash
$ 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

[안정적: 2 - 안정적]

안정적: 2 안정성: 2 - 안정적

--heap-prof에 의해 생성된 힙 프로파일의 파일 이름을 지정합니다.

--heapsnapshot-near-heap-limit=max_count

추가됨: v15.1.0, v14.18.0

[안정적: 1 - 실험적]

안정적: 1 안정성: 1 - 실험적

V8 힙 사용량이 힙 한계에 가까워지면 V8 힙 스냅샷을 디스크에 기록합니다. count는 음이 아닌 정수여야 합니다(이 경우 Node.js는 디스크에 최대 max_count개의 스냅샷만 기록합니다).

스냅샷을 생성할 때 가비지 컬렉션이 트리거되어 힙 사용량이 줄어들 수 있습니다. 따라서 Node.js 인스턴스가 최종적으로 메모리가 부족해지기 전에 여러 스냅샷이 디스크에 기록될 수 있습니다. 이러한 힙 스냅샷을 비교하여 연속적인 스냅샷이 찍히는 동안 어떤 객체가 할당되는지 확인할 수 있습니다. Node.js가 정확히 max_count개의 스냅샷을 디스크에 기록한다는 보장은 없지만, max_count0보다 클 경우 Node.js 인스턴스가 메모리가 부족해지기 전에 최소 하나 이상 최대 max_count개의 스냅샷을 생성하려고 시도합니다.

V8 스냅샷 생성에는 시간과 메모리(V8 힙에 의해 관리되는 메모리와 V8 힙 외부의 네이티브 메모리 모두)가 필요합니다. 힙이 클수록 더 많은 리소스가 필요합니다. Node.js는 추가 V8 힙 메모리 오버헤드를 수용하도록 V8 힙을 조정하고 프로세스에 사용 가능한 모든 메모리를 사용하지 않도록 최선을 다합니다. 프로세스가 시스템이 적절하다고 판단하는 것보다 더 많은 메모리를 사용하는 경우 시스템 구성에 따라 시스템에서 프로세스가 갑자기 종료될 수 있습니다.

bash
$ 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은 유효한 시그널 이름이어야 합니다. 기본적으로 비활성화되어 있습니다.

bash
$ 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

[안정적: 1 - 실험적]

안정적: 1 안정성: 1 - 실험적

시작 시 지정된 모듈을 미리 로드합니다. 이 플래그가 여러 번 제공되면 각 모듈은 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-EncodingContent-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:port127.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:port127.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

[안정성: 1 - 실험적]

안정성: 1 안정성: 1 - 실험적. 이 플래그는 V8에서 상속되었으며 상위에서 변경될 수 있습니다.

실행 가능한 메모리의 런타임 할당을 비활성화합니다. 보안상의 이유로 일부 플랫폼에서 필요할 수 있습니다. 다른 플랫폼에서 공격 표면을 줄일 수도 있지만 성능에 심각한 영향을 미칠 수 있습니다.

--localstorage-file=file

추가됨: v22.4.0

localStorage 데이터를 저장하는 데 사용되는 파일입니다. 파일이 존재하지 않으면 localStorage에 처음 액세스할 때 생성됩니다. 동일한 파일을 여러 Node.js 프로세스에서 동시에 공유할 수 있습니다. Node.js가 --experimental-webstorage 플래그와 함께 시작되지 않는 한 이 플래그는 무시됩니다.

--max-http-header-size=size

[이력]

버전변경 사항
v13.13.0HTTP 헤더의 최대 기본 크기를 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

[안정성: 1 - 실험적]

안정성: 1 안정성: 1 - 실험적

전역 범위에서 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

[안정성: 1 - 실험적]

안정성: 1 안정성: 1.1 - 적극적인 개발 중

require()에서 동기 ES 모듈 그래프 로드에 대한 지원을 비활성화합니다.

require()를 사용하여 ECMAScript 모듈 로드를 참조하십시오.

--no-experimental-sqlite

[히스토리]

버전변경 사항
v23.4.0SQLite는 플래그가 해제되었지만 여전히 실험적입니다.
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

[안정적: 2 - 안정적]

안정적: 2 안정성: 2 - 안정적.

현재 프로세스에 대한 권한 모델을 활성화합니다. 활성화되면 다음 권한이 제한됩니다.

--preserve-symlinks

추가됨: v6.3.0

모듈을 확인하고 캐싱할 때 심볼릭 링크를 유지하도록 모듈 로더에 지시합니다.

기본적으로 Node.js가 다른 온디스크 위치에 심볼릭 링크된 경로에서 모듈을 로드할 때, Node.js는 링크의 참조를 해제하고 모듈의 실제 온디스크 "실제 경로"를 식별자와 다른 종속성 모듈을 찾는 루트 경로 모두로 사용합니다. 대부분의 경우 이 기본 동작은 허용됩니다. 그러나 아래 예에서 설명된 것처럼 심볼릭 링크된 피어 종속성을 사용하는 경우 moduleAmoduleB를 피어 종속성으로 요구하려고 하면 기본 동작으로 인해 예외가 발생합니다.

text
{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도 사용하십시오.

추가됨: v10.2.0

주 모듈(require.main)을 확인하고 캐싱할 때 심볼릭 링크를 유지하도록 모듈 로더에 지시합니다.

이 플래그는 주 모듈이 --preserve-symlinks가 다른 모든 import에 제공하는 동일한 동작을 선택할 수 있도록 존재합니다. 그러나 이전 Node.js 버전과의 호환성을 위해 별도의 플래그입니다.

--preserve-symlinks-main--preserve-symlinks를 의미하지 않습니다. 상대 경로를 확인하기 전에 심볼릭 링크를 따르는 것이 바람직하지 않은 경우 --preserve-symlinks에 추가로 --preserve-symlinks-main을 사용하십시오.

자세한 내용은 --preserve-symlinks를 참조하십시오.

[히스토리]

버전변경 사항
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.0NODE_RUN_SCRIPT_NAME 환경 변수가 추가되었습니다.
v22.3.0NODE_RUN_PACKAGE_JSON_PATH 환경 변수가 추가되었습니다.
v22.3.0루트 디렉토리까지 이동하여 명령을 실행할 package.json 파일을 찾고, PATH 환경 변수를 그에 따라 업데이트합니다.
v22.0.0추가됨: v22.0.0

[안정적: 2 - 안정적]

안정적: 2 안정성: 2 - 안정적

package.json"scripts" 객체에서 지정된 명령을 실행합니다. 누락된 "command"가 제공되면 사용 가능한 스크립트를 나열합니다.

--run은 루트 디렉토리까지 이동하여 명령을 실행할 package.json 파일을 찾습니다.

--run은 현재 디렉토리의 각 상위 디렉토리에 대해 ./node_modules/.binPATH 앞에 추가하여 여러 node_modules 디렉토리가 있는 다른 폴더의 바이너리를 실행합니다 ( ancestor-folder/node_modules/.bin이 디렉토리인 경우).

--run은 관련 package.json이 포함된 디렉토리에서 명령을 실행합니다.

예를 들어, 다음 명령은 현재 폴더의 package.jsontest 스크립트를 실행합니다.

bash
$ node --run test

명령에 인수를 전달할 수도 있습니다. -- 다음의 모든 인수는 스크립트에 추가됩니다.

bash
$ node --run test -- --verbose

의도적인 제한 사항

node --runnpm 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 - 실험적]

안정적: 1 안정성: 1 - 실험적

최소한의 커버된 분기 비율을 요구합니다. 코드 적용 범위가 지정된 임계값에 도달하지 않으면 프로세스는 코드 1로 종료됩니다.

--test-coverage-exclude

추가됨: v22.5.0

[안정적: 1 - 실험적]

안정적: 1 안정성: 1 - 실험적

전체 또는 상대 파일 경로와 모두 일치할 수 있는 glob 패턴을 사용하여 코드 적용 범위에서 특정 파일을 제외합니다.

여러 glob 패턴을 제외하려면 이 옵션을 여러 번 지정할 수 있습니다.

--test-coverage-exclude--test-coverage-include를 모두 제공하는 경우 파일은 적용 범위 보고서에 포함되려면 기준을 모두 충족해야 합니다.

기본적으로 일치하는 모든 테스트 파일은 적용 범위 보고서에서 제외됩니다. 이 옵션을 지정하면 기본 동작이 재정의됩니다.

--test-coverage-functions=threshold

추가됨: v22.8.0

[안정적: 1 - 실험적]

안정적: 1 안정성: 1 - 실험적

최소한의 커버된 함수 비율을 요구합니다. 코드 적용 범위가 지정된 임계값에 도달하지 않으면 프로세스는 코드 1로 종료됩니다.

--test-coverage-include

추가됨: v22.5.0

[안정적: 1 - 실험적]

안정적: 1 안정성: 1 - 실험적

절대 경로와 상대 경로 모두 일치시킬 수 있는 glob 패턴을 사용하여 코드 적용 범위에 특정 파일을 포함합니다.

여러 glob 패턴을 포함하려면 이 옵션을 여러 번 지정할 수 있습니다.

--test-coverage-exclude--test-coverage-include를 모두 제공하는 경우 파일은 적용 범위 보고서에 포함되려면 기준을 모두 충족해야 합니다.

--test-coverage-lines=threshold

추가됨: v22.8.0

[안정적: 1 - 실험적]

안정적: 1 안정성: 1 - 실험적

최소 퍼센트의 적용된 라인을 요구합니다. 코드 적용 범위가 지정된 임계값에 도달하지 않으면 프로세스가 코드 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 부분에 있는 테스트만 실행합니다.

예를 들어, 테스트 모음을 세 부분으로 나누려면 다음을 사용하십시오.

bash
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 모듈 로드 사용에 대한 정보를 출력합니다.

modeall이면 모든 사용량이 출력됩니다. modeno-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_DIRSSL_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

[안정성: 2 - 안정적]

안정성: 2 안정성: 2 - 안정적

감시 모드에서 Node.js를 시작합니다. 감시 모드에서는 감시 대상 파일이 변경되면 Node.js 프로세스가 다시 시작됩니다. 기본적으로 감시 모드는 진입점과 필요하거나 가져온 모든 모듈을 감시합니다. 감시할 경로를 지정하려면 --watch-path를 사용하십시오.

이 플래그는 --check, --eval, --interactive 또는 REPL과 함께 사용할 수 없습니다.

bash
node --watch index.js

--watch-path

[히스토리]

버전변경 사항
v22.0.0, v20.13.0감시 모드가 안정화되었습니다.
v18.11.0, v16.19.0추가됨: v18.11.0, v16.19.0

[안정적: 2 - 안정적]

안정적: 2 안정성: 2 - 안정적

감시 모드에서 Node.js를 시작하고 감시할 경로를 지정합니다. 감시 모드일 때 감시되는 경로의 변경 사항은 Node.js 프로세스를 다시 시작합니다. --watch와 함께 사용하더라도 필요하거나 가져온 모듈의 감시는 꺼집니다.

이 플래그는 --check, --eval, --interactive, --test 또는 REPL과 함께 사용할 수 없습니다.

bash
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

감시 모드에서 프로세스가 다시 시작될 때 콘솔 지우기를 비활성화합니다.

bash
node --watch --watch-preserve-output test.js

--zero-fill-buffers

추가됨: v6.0.0

새로 할당된 모든 BufferSlowBuffer 인스턴스를 자동으로 0으로 채웁니다.

환경 변수

FORCE_COLOR=[1, 2, 3]

FORCE_COLOR 환경 변수는 ANSI 색상 출력을 활성화하는 데 사용됩니다. 값은 다음과 같을 수 있습니다.

  • 1, true 또는 빈 문자열 ''은 16색 지원을 나타냅니다.
  • 2는 256색 지원을 나타냅니다.
  • 3은 1600만 색 지원을 나타냅니다.

FORCE_COLOR가 사용되고 지원되는 값으로 설정되면 NO_COLORNODE_DISABLE_COLORS 환경 변수는 무시됩니다.

다른 모든 값은 색상 출력이 비활성화됩니다.

NODE_COMPILE_CACHE=dir

추가됨: v22.1.0

[안정적: 1 - 실험적]

안정적: 1 안정성: 1.1 - 적극적 개발 중

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

[안정적: 1 - 실험적]

안정적: 1 안정성: 1.1 - 적극적 개발 중

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는 오류와 함께 종료됩니다.

옵션 값에 공백이 포함된 경우 큰따옴표를 사용하여 이스케이프할 수 있습니다.

bash
NODE_OPTIONS='--require "./my path/file.js"'

명령줄 옵션으로 전달된 싱글톤 플래그는 NODE_OPTIONS에 전달된 동일한 플래그를 재정의합니다.

bash
# 검사기는 5555 포트에서 사용할 수 있습니다. {#node_options=options}
NODE_OPTIONS='--inspect=localhost:4444' node --inspect=localhost:5555

여러 번 전달할 수 있는 플래그는 NODE_OPTIONS 인스턴스가 먼저 전달된 다음 명령줄 인스턴스가 그 뒤에 전달된 것처럼 처리됩니다.

bash
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_COLORNODE_DISABLE_COLORS의 별칭입니다. 환경 변수의 값은 임의적입니다.

적용 범위 출력 {#no_color=<any>}

적용 범위는 최상위 키 resultScriptCoverage 객체의 배열로 출력됩니다.

json
{
  "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에 있음)를 포함하는 객체입니다.

json
{
  "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.0process.env.TZ =를 사용하여 TZ 변수를 변경하면 Windows에서도 시간대가 변경됩니다.
v13.0.0process.env.TZ =를 사용하여 TZ 변수를 변경하면 POSIX 시스템에서도 시간대가 변경됩니다.
v0.0.1추가됨: v0.0.1

TZ 환경 변수는 시간대 구성을 지정하는 데 사용됩니다.

Node.js는 다른 환경에서 TZ가 처리되는 다양한 방법을 모두 지원하지 않지만, 기본 시간대 ID (예: 'Etc/UTC', 'Europe/Paris', 또는 'America/New_York')는 지원합니다. 다른 약어나 별칭을 몇 가지 더 지원할 수 있지만, 이러한 것은 강력하게 권장하지 않으며 보장되지 않습니다.

bash
$ 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()와 같은 비동기 암호화 API
  • dns.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)으로 설정하는 것을 고려하십시오.

bash
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비트 시스템에서 벤치마크를 수행합니다.

bash
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입니다.

bash
node --stack-trace-limit=12 -p -e "Error.stackTraceLimit" # 12 출력