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 モジュールローダー に渡されます。

  • プログラムが、--import などの ECMAScript モジュールローダーでエントリポイントを強制的にロードするコマンドラインフラグで開始された場合。
  • ファイルに .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 のエイリアスです。他のコマンドラインユーティリティで - を使用するのと同じで、スクリプトが stdin から読み込まれ、残りのオプションがそのスクリプトに渡されることを意味します。

--

追加: v6.11.0

node オプションの終わりを示します。残りの引数をスクリプトに渡します。スクリプトファイル名または eval/print スクリプトがこれより前に指定されていない場合、次の引数がスクリプトファイル名として使用されます。

--abort-on-uncaught-exception

追加: v0.10.8

終了する代わりにアボートすると、デバッガー (lldbgdbmdb など) を使用した事後分析用にコアファイルが生成されます。

このフラグが渡された場合でも、process.setUncaughtExceptionCaptureCallback()(およびそれを使用する node:domain モジュールの使用)を通じて、アボートしないように動作を設定することができます。

--allow-addons

追加: v21.6.0, v20.12.0

[安定版: 1 - 実験的]

安定版: 1 安定度: 1.1 - 活発な開発

パーミッションモデルを使用する場合、プロセスはデフォルトでネイティブアドオンを使用できません。ユーザーが Node.js の起動時に --allow-addons フラグを明示的に渡さない限り、そうしようとすると ERR_DLOPEN_DISABLED がスローされます。

例:

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: Cannot load native addon because loading addons is disabled.
    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がスローされます。

例:

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.0Permission Model と --allow-fs フラグが安定版になりました。
v20.7.0カンマ(,)で区切られたパスは許可されなくなりました。
v20.0.0追加:v20.0.0

[安定版: 2 - 安定]

安定版: 2 安定度: 2 - 安定。

このフラグは、Permission Model を使用して、ファイルシステムの書き込み権限を構成します。

--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 - 積極的な開発

Permission Model を使用する場合、プロセスはデフォルトで WASI インスタンスを作成できません。セキュリティ上の理由から、ユーザーがメインの Node.js プロセスで明示的に --allow-wasi フラグを渡さない限り、呼び出しは ERR_ACCESS_DENIED をスローします。

例:

js
const { WASI } = require('node:wasi')
// 権限をバイパスしようとする
new WASI({
  version: 'preview1',
  // ファイルシステム全体をマウントしようとする
  preopens: {
    '/': '/',
  },
})
bash
$ node --permission --allow-fs-read=* index.js

エラー: この API へのアクセスは制限されています
    at node:internal/main/run_main_module:30:49 {
  code: 'ERR_ACCESS_DENIED',
  permission: 'WASI',
}

--allow-worker

追加:v20.0.0

[安定版: 1 - 試験的]

安定版: 1 安定度: 1 .1 - 積極的な開発

Permission Model を使用する場合、プロセスはデフォルトでワーカー スレッドを作成できません。セキュリティ上の理由から、ユーザーがメインの Node.js プロセスで明示的に --allow-worker フラグを渡さない限り、呼び出しは ERR_ACCESS_DENIED をスローします。

例:

js
const { Worker } = require('node:worker_threads')
// 権限をバイパスしようとする
new Worker(__filename)
bash
$ node --permission --allow-fs-read=* index.js

エラー: この API へのアクセスは制限されています
    at node:internal/main/run_main_module:17:47 {
  code: 'ERR_ACCESS_DENIED',
  permission: 'WorkerThreads'
}

--build-snapshot

追加: v18.8.0

[安定性: 1 - 実験的]

安定性: 1 安定性: 1 - 実験的

プロセスが終了するときにスナップショット blob を生成し、ディスクに書き込みます。これは後で --snapshot-blob でロードできます。

スナップショットをビルドするときに、--snapshot-blob が指定されていない場合、生成された blob はデフォルトで現在の作業ディレクトリの snapshot.blob に書き込まれます。それ以外の場合は、--snapshot-blob で指定されたパスに書き込まれます。

bash
$ echo "globalThis.foo = '私はスナップショットから来ました'" > 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
私はスナップショットから来ました

v8.startupSnapshot API は、スナップショットのビルド時にエントリポイントを指定するために使用でき、これにより、逆シリアル化時に追加のエントリスクリプトを必要としなくなります。

bash
$ echo "require('v8').startupSnapshot.setDeserializeMainFunction(() => console.log('私はスナップショットから来ました'))" > snapshot.js
$ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js
$ node --snapshot-blob snapshot.blob
私はスナップショットから来ました

詳細については、v8.startupSnapshot API のドキュメントを参照してください。

現在、ランタイムスナップショットのサポートは実験的です。

--build-snapshot-config

追加: v21.6.0, v20.12.0

[安定性: 1 - 実験的]

安定性: 1 安定性: 1 - 実験的

スナップショット作成の動作を構成する JSON 構成ファイルへのパスを指定します。

現在、次のオプションがサポートされています。

  • builder <string> 必須。--build-snapshotbuilder をメインスクリプト名として渡されたかのように、スナップショットをビルドする前に実行されるスクリプトの名前を提供します。
  • withoutCodeCache <boolean> オプション。コードキャッシュを含めると、スナップショットに含まれる関数のコンパイルにかかる時間が短縮されます。ただし、スナップショットサイズが大きくなり、スナップショットの移植性が損なわれる可能性があります。

このフラグを使用すると、コマンドラインで提供された追加のスクリプトファイルは実行されず、代わりに通常のコマンドライン引数として解釈されます。

-c, --check

[履歴]

バージョン変更点
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

[履歴]

バージョン変更点
v22.9.0, v20.18.0このフラグは実験的ではなくなりました。
v14.9.0, v12.19.0追加: v14.9.0, v12.19.0

[安定版: 2 - 安定版]

安定版: 2 安定度: 2 - 安定版

カスタムの条件付きエクスポート解決条件を提供します。

任意の数のカスタム文字列条件名が許可されます。

デフォルトの Node.js 条件 "node""default""import"、および "require" は常に定義されたとおりに適用されます。

たとえば、「開発」の解決でモジュールを実行するには:

bash
node -C development app.js

--cpu-prof

[履歴]

バージョン変更点
v22.4.0, v20.16.0--cpu-prof フラグが安定版になりました。
v12.0.0追加: v12.0.0

[安定版: 2 - 安定版]

安定版: 2 安定度: 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

[履歴]

バージョン変更点
v22.4.0, v20.16.0--cpu-prof フラグが安定版になりました。
v12.0.0追加: v12.0.0

[安定版: 2 - 安定版]

安定版: 2 安定度: 2 - 安定版

--cpu-prof で生成された CPU プロファイルを配置するディレクトリを指定します。

デフォルト値は、--diagnostic-dir コマンドラインオプションによって制御されます。

--cpu-prof-interval

[履歴]

バージョン変更点
v22.4.0, v20.16.0--cpu-prof フラグが安定版になりました。
v12.2.0v12.2.0 で追加されました。

[安定版: 2 - 安定版]

安定版: 2 安定性: 2 - 安定版

--cpu-prof によって生成される CPU プロファイルのサンプリング間隔をマイクロ秒単位で指定します。デフォルトは 1000 マイクロ秒です。

--cpu-prof-name

[履歴]

バージョン変更点
v22.4.0, v20.16.0--cpu-prof フラグが安定版になりました。
v12.0.0v12.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 コードの例外をスローします。

--disable-warning=code-or-type

[安定版: 1 - 試験的]

安定版: 1 安定性: 1.1 - 開発中

追加: v21.3.0, v20.11.0

code または type で特定のプロセス警告を無効にします。

process.emitWarning() から出力される警告には、codetype が含まれる場合があります。このオプションは、一致する code または type を持つ警告を出力しません。

非推奨 API のリスト

Node.js コアの警告タイプは、DeprecationWarningExperimentalWarning です。

たとえば、次のスクリプトは、node --disable-warning=DEP0025 で実行された場合、DEP0025 require('node:sys') を出力しません。

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

たとえば、次のスクリプトは、node --disable-warning=ExperimentalWarning で実行された場合、DEP0025 require('node:sys') を出力しますが、(<=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 はトラップハンドラーベースの 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のような、文字列からコードを生成する組み込み言語機能を、例外をスローするようにします。これは 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 準拠の暗号化を有効にします。(Node.js が FIPS 互換の OpenSSL に対してビルドされている必要があります。)

--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 などのトランスパイラを使用する場合、アプリケーションによってスローされるスタックトレースは、元のソース位置ではなく、トランスパイルされたコードを参照します。--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

ファイルの形式は、環境変数名と値のキーと値のペアを=で区切って 1 行に記述する必要があります。

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}

[History]

VersionChanges
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

[Stable: 1 - 実験的]

Stable: 1 安定性: 1 - 実験的

async_hooks に依存するデフォルトの実装ではなく、AsyncContextFrame に裏打ちされた AsyncLocalStorage の使用を有効にします。この新しいモデルは非常に異なる方法で実装されているため、アプリケーション内でのコンテキストデータの流れ方に違いが生じる可能性があります。そのため、本番環境で使用する前に、この変更によってアプリケーションの動作に影響がないことを確認することをお勧めします。

--experimental-eventsource

追加: v22.3.0, v20.18.0

グローバルスコープでの EventSource Web API の公開を有効にします。

--experimental-import-meta-resolve

[履歴]

VersionChanges
v20.6.0, v18.19.0同期的な import.meta.resolve がデフォルトで利用可能になり、実験的な第 2 引数を以前サポートしていた有効化フラグは保持されています。
v13.9.0, v12.16.2追加: v13.9.0, v12.16.2

コンテキスト解決のために第 2 引数 parentURL を渡すことができる、実験的な import.meta.resolve() 親 URL のサポートを有効にします。

以前は import.meta.resolve 機能全体を制限していました。

--experimental-loader=module

[履歴]

バージョン変更点
v12.11.1このフラグは--loaderから--experimental-loaderに名前が変更されました。
v8.8.0v8.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デフォルトで true になりました。
v22.0.0, v20.17.0追加: v22.0.0, v20.17.0

[安定度: 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

[Stable: 1 - 実験的]

Stable: 1 Stability: 1.1 - アクティブ開発中

TypeScript のみの構文を JavaScript コードに変換することを有効にします。--experimental-strip-types--enable-source-maps を暗黙的に含みます。

--experimental-vm-modules

追加: v9.6.0

node:vm モジュールで実験的な ES Module サポートを有効にします。

--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 System Interface (WASI) サポートを有効にします。

--experimental-wasm-modules

追加: v12.3.0

実験的な WebAssembly モジュール サポートを有効にします。

--experimental-webstorage

追加: v22.4.0

実験的な Web Storage サポートを有効にします。

--expose-gc

追加: v22.3.0, v20.18.0

[Stable: 1 - 実験的]

Stable: 1 Stability: 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

[安定性: 1 - 試験的]

安定性: 1 安定性: 1 - 試験的

ArrayObject のような試験的なフローズンイントリンシクスを有効にします。

ルートコンテキストのみがサポートされています。globalThis.Array が実際にデフォルトのイントリンシック参照であるという保証はありません。このフラグの下ではコードが壊れる可能性があります。

ポリフィルを追加できるように、--require--import はどちらもイントリンシクスをフリーズする前に実行されます。

--heap-prof

[履歴]

バージョン変更
v22.4.0, v20.16.0--heap-prof フラグが安定版になりました。
v12.4.0追加: v12.4.0

[安定性: 2 - 安定]

安定性: 2 安定性: 2 - 安定

起動時に 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

[履歴]

バージョン変更
v22.4.0, v20.16.0--heap-prof フラグが安定版になりました。
v12.4.0追加: v12.4.0

[安定性: 2 - 安定]

安定性: 2 安定性: 2 - 安定

--heap-prof によって生成されるヒーププロファイルを配置するディレクトリを指定します。

デフォルト値は、--diagnostic-dir コマンドラインオプションによって制御されます。

--heap-prof-interval

[履歴]

バージョン変更
v22.4.0, v20.16.0--heap-prof フラグが安定版になりました。
v12.4.0追加: v12.4.0

[安定性: 2 - 安定]

安定性: 2 安定性: 2 - 安定

--heap-prof によって生成されるヒーププロファイルの平均サンプリング間隔をバイト単位で指定します。デフォルトは 512 * 1024 バイトです。

--heap-prof-name

[履歴]

バージョン変更点
v22.4.0, v20.16.0--heap-prof フラグが安定版になりました。
v12.4.0v12.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 より大きい場合は、少なくとも 1 つ、最大で max_count 個のスナップショットを Node.js インスタンスがメモリ不足になる前に生成するように最善を尽くします。

V8 スナップショットの生成には時間とメモリ(V8 ヒープによって管理されるメモリと V8 ヒープ外のネイティブメモリの両方)がかかります。ヒープが大きければ大きいほど、より多くのリソースが必要です。Node.js は、追加の V8 ヒープメモリオーバーヘッドに対応するように V8 ヒープを調整し、プロセスが利用できるすべてのメモリを使い切らないように最善を尽くします。プロセスがシステムが適切とみなすよりも多くのメモリを使用すると、システムの構成によっては、プロセスがシステムによって突然終了される場合があります。

bash
$ node --max-old-space-size=100 --heapsnapshot-near-heap-limit=3 index.js
Wrote snapshot to Heap.20200430.100036.49580.0.001.heapsnapshot
Wrote snapshot to Heap.20200430.100037.49580.0.002.heapsnapshot
Wrote snapshot to Heap.20200430.100038.49580.0.003.heapsnapshot

<--- Last few GCs --->

[49580:0x110000000]     4826 ms: Mark-sweep 130.6 (147.8) -> 130.5 (147.8) MB, 27.4 / 0.0 ms  (average mu = 0.126, current 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  (average mu = 0.088, current mu = 0.031) allocation failure scavenge might not succeed


<--- JS stacktrace --->

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
....

--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 は ES モジュール構文をサポートしていないため、--print--input-type=module を使用するとエラーがスローされます。

--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:port127.0.0.1:9229です。ポート0が指定されている場合、利用可能なランダムなポートが使用されます。

Node.js デバッガーの詳細については、Node.js の V8 インスペクター統合を参照してください。

--inspect-port=[host:]port

追加: v7.6.0

インスペクターがアクティブ化されたときに使用されるhost:portを設定します。SIGUSR1信号を送信してインスペクターをアクティブ化する場合に役立ちます。

デフォルトのホストは127.0.0.1です。ポート0が指定されている場合、利用可能なランダムなポートが使用されます。

hostパラメーターの使用に関するセキュリティに関する警告を以下で確認してください。

--inspect-publish-uid=stderr,http

インスペクターの WebSocket URL の公開方法を指定します。

デフォルトでは、インスペクターの WebSocket 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++アドオンを必要とすると失敗し、例外をスローします。

--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 の設定を共有すると、意図しない影響が生じる可能性があるため、Node.js に固有の設定セクションである nodejs_conf を使用することをお勧めします。これは、このオプションを使用しない場合のデフォルトです。

--pending-deprecation

追加: v8.0.0

保留中の非推奨警告を発行します。

保留中の非推奨は一般的に、実行時の非推奨とほぼ同じですが、デフォルトでオフになっており、--pending-deprecation コマンドラインフラグまたは NODE_PENDING_DEPRECATION=1 環境変数が設定されない限り発行されないという重要な例外があります。保留中の非推奨は、開発者が非推奨の API の使用を検出するために利用できる、一種の選択的な「早期警告」メカニズムを提供するために使用されます。

--permission

[履歴]

バージョン変更点
v23.5.0Permission Model が安定しました。
v20.0.0追加: v20.0.0

[安定: 2 - 安定]

安定: 2 安定性: 2 - 安定。

現在のプロセスに対して Permission Model を有効にします。有効にすると、次のアクセス許可が制限されます。

--preserve-symlinks

追加: v6.3.0

モジュールを解決およびキャッシュするときに、モジュールローダーにシンボリックリンクを保持するように指示します。

デフォルトでは、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 はそれらを 2 つの個別のモジュールとみなし、モジュールを複数回ロードしようとして、例外がスローされます)。

--preserve-symlinks フラグはメインモジュールには適用されません。これにより、node --preserve-symlinks node_module/.bin/\<foo\> が機能します。メインモジュールにも同じ動作を適用するには、--preserve-symlinks-main も使用してください。

追加: v10.2.0

メインモジュール(require.main)を解決およびキャッシュする際に、シンボリックリンクを保持するようにモジュールローダーに指示します。

このフラグは、メインモジュールが--preserve-symlinksが他のすべてのインポートに与えるのと同じ動作にオプトインできるようにするために存在します。ただし、古い 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

レポートをコンパクトな形式、つまり 1 行の 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.0v11.8.0 で追加されました。

未処理の例外が原因でプロセスが終了したときにレポートを生成できるようにします。ネイティブスタックやその他のランタイム環境データと組み合わせて JavaScript スタックを検査するのに役立ちます。

-r, --require module

追加: v1.6.0

起動時に指定されたモジュールをプリロードします。

require() のモジュール解決規則に従います。module はファイルへのパス、または node モジュール名です。

CommonJS モジュールのみがサポートされています。--import を使用してECMAScript モジュールをプリロードします。--require でプリロードされたモジュールは、--import でプリロードされたモジュールの前に実行されます。

モジュールは、メインスレッドだけでなく、すべてのワーカースレッド、フォークされたプロセス、またはクラスタ化されたプロセスにプリロードされます。

--run

[履歴]

バージョン変更点
v22.3.0NODE_RUN_SCRIPT_NAME 環境変数が追加されました。
v22.3.0NODE_RUN_PACKAGE_JSON_PATH 環境変数が追加されました。
v22.3.0ルートディレクトリまで遡り、コマンドを実行する package.json ファイルを見つけ、それに応じて PATH 環境変数を更新します。
v22.0.0v22.0.0 で追加されました。

[安定版: 2 - 安定版]

安定版: 2 安定度: 2 - 安定版

これは、package.json の "scripts" オブジェクトから指定されたコマンドを実行します。 "command" が欠落している場合は、使用可能なスクリプトを一覧表示します。

--run はルートディレクトリまで遡り、コマンドを実行する package.json ファイルを見つけます。

--run は、複数の node_modules ディレクトリが存在する異なるフォルダーからバイナリを実行するために、現在のディレクトリの各祖先の ./node_modules/.binPATH に先頭に追加します。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

[安定: 1 - 実験的]

安定: 1 安定性: 1 - 実験的

--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 - 実験的

絶対パスと相対パスの両方に一致するグロブパターンを使用して、コードカバレッジから特定のファイルを除外します。

このオプションは、複数のグロブパターンを除外するために複数回指定できます。

--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 - 試験的

絶対パスと相対パスの両方に一致するグロブパターンを使用して、コードカバレッジに特定のファイルを含めます。

このオプションは、複数のグロブパターンを含めるために複数回指定できます。

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

[履歴]

バージョン変更点
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 の部分に該当するものだけを実行します。

たとえば、テストスイートを 3 つの部分に分割するには、次のように使用します。

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

[履歴]

バージョン変更点
v23.4.0スナップショットテストが実験的ではなくなりました。
v22.3.0追加: v22.3.0

スナップショットテストのためにテストランナーが使用するスナップショットファイルを再生成します。

--throw-deprecation

追加: v0.11.14

非推奨時にエラーをスローします。

--title=title

追加: v10.7.0

起動時に process.title を設定します。

--tls-cipher-list=list

追加: v4.0.0

代替のデフォルト TLS 暗号リストを指定します。Node.js が暗号化サポート(デフォルト)でビルドされている必要があります。

--tls-keylog=file

追加: v13.2.0, v12.16.0

TLS キーマテリアルをファイルに記録します。キーマテリアルは NSS SSLKEYLOGFILE形式で、TLS トラフィックを復号するためにソフトウェア(Wireshark など)で使用できます。

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

TLS パケットトレース情報を stderr に出力します。これは、TLS 接続の問題をデバッグするために使用できます。

--trace-uncaught

追加: v13.1.0

キャッチされない例外のスタックトレースを出力します。通常、Error の作成に関連付けられたスタックトレースが出力されますが、これにより Node.js は値のスローに関連付けられたスタックトレースも出力します(Error インスタンスである必要はありません)。

このオプションを有効にすると、ガベージコレクションの動作に悪影響を与える可能性があります。

--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 の静的コードは 4 KiB ページではなく 2 MiB ページに移動されます。

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 プロセスが再起動します。デフォルトでは、ウォッチモードはエントリポイントと、required または imported されたモジュールを監視します。監視するパスを指定するには、--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

[Stable: 2 - 安定]

Stable: 2 安定度: 2 - 安定

Node.js をウォッチモードで起動し、監視するパスを指定します。ウォッチモードでは、監視対象パスの変更によって Node.js プロセスが再起動されます。これにより、--watchと組み合わせて使用した場合でも、require または import されたモジュールの監視はオフになります。

このフラグは、--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

新しく割り当てられたすべてのBufferおよびSlowBufferインスタンスを自動的にゼロで埋めます。

環境変数

FORCE_COLOR=[1, 2, 3]

FORCE_COLOR環境変数は、ANSI カラー出力の有効化に使用されます。値は次のいずれかです。

  • 1true、または空文字列''は、16 色サポートを示します。
  • 2は、256 色サポートを示します。
  • 3は、1600 万色サポートを示します。

FORCE_COLORが使用され、サポートされている値に設定されている場合、NO_COLORおよびNODE_DISABLE_COLORS環境変数は両方とも無視されます。

他の値を指定すると、カラー出力は無効になります。

NODE_COMPILE_CACHE=dir

追加: v22.1.0

[Stable: 1 - 実験的]

Stable: 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 形式の信頼された証明書を 1 つ以上含む必要があります。ファイルが存在しないか形式が正しくない場合、process.emitWarning() でメッセージが (1 回) 発行されますが、それ以外のエラーは無視されます。

TLS または HTTPS クライアントまたはサーバーに対して ca オプションプロパティが明示的に指定されている場合、よく知られている証明書も追加の証明書も使用されません。

この環境変数は、node が setuid root として実行されている場合、または 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 の両方のバリアントをサポートする場合、両方ともサポートされますが、リストには 1 つだけが含まれます。

  • --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": []
    }
  ]
}

ソースマップキャッシュ

[安定: 1 - 試験的]

安定: 1 安定度: 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 を使用する場合、ノードと同じ CA を信頼する可能性があることに注意してください。

SSL_CERT_FILE=file

追加: v7.7.0

--use-openssl-caが有効な場合、これは信頼された証明書を含む OpenSSL のファイルを上書きして設定します。

子環境が明示的に設定されていない限り、この環境変数は任意の子プロセスに継承され、それらが OpenSSL を使用する場合、ノードと同じ 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スレッドに設定します。

非同期システム API は、可能な限り Node.js で使用されますが、存在しない場合、libuv のスレッドプールを使用して、同期システム API に基づいた非同期 Node 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 のパフォーマンスが低下します。この問題を軽減するための潜在的な解決策の 1 つは、'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 は未使用メモリを解放するためにガベージコレクションにより多くの時間を費やします。

2 GiB のメモリを搭載したマシンでは、他の用途のためにメモリを残し、スワップを避けるために、これを 1536(1.5 GiB)に設定することを検討してください。

bash
node --max-old-space-size=1536 index.js

--max-semi-space-size=SIZE (MiB 単位)

V8 のスカベンジガベージコレクターの最大セミスペースサイズを MiB(メビバイト)単位で設定します。セミスペースの最大サイズを増やすと、より多くのメモリを消費する代わりに Node.js のスループットが向上する可能性があります。

V8 ヒープの若い世代のサイズは、セミスペースのサイズの 3 倍(V8 のYoungGenerationSizeFromSemiSpaceSizeを参照)であるため、セミスペースに 1 MiB を追加すると、3 つの個々のセミスペースのそれぞれに適用され、ヒープサイズが 3 MiB 増加します。スループットの向上はワークロードによって異なります(#42511を参照)。

デフォルト値はメモリ制限に依存します。たとえば、メモリ制限が 512 MiB の 64 ビットシステムでは、セミスペースの最大サイズはデフォルトで 1 MiB になります。メモリ制限が 2GiB 以下の場合は、64 ビットシステムではセミスペースのデフォルトの最大サイズは 16 MiB 未満になります。

アプリケーションに最適な構成を得るには、アプリケーションのベンチマークを実行するときに、さまざまな 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を出力