コマンドライン 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.0 | Node.js オプションでも、V8 オプションに加えて、ダッシュの代わりにアンダースコアを使用できるようになりました。 |
V8 オプションを含むすべてのオプションで、単語はダッシュ (-
) とアンダースコア (_
) の両方で区切ることができます。たとえば、--pending-deprecation
は --pending_deprecation
と同等です。
--max-http-header-size
などの単一の値を取るオプションが複数回渡された場合、最後に渡された値が使用されます。コマンドラインからのオプションは、NODE_OPTIONS
環境変数を介して渡されたオプションよりも優先されます。
-
追加: v8.0.0
stdin のエイリアス。 他のコマンドラインユーティリティでの -
の使用と同様に、スクリプトが 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
Permission Modelを使用する場合、プロセスはデフォルトでネイティブアドオンを使用できません。 これを試みると、Node.js の起動時にユーザーが明示的に --allow-addons
フラグを渡さない限り、ERR_DLOPEN_DISABLED
がスローされます。
例:
// ネイティブアドオンを require しようとします
require('nodejs-addon-example');
$ node --permission --allow-fs-read=* index.js
node:internal/modules/cjs/loader:1319
return process.dlopen(module, path.toNamespacedPath(filename));
^
Error: 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
Added in: v20.0.0
[Stable: 1 - Experimental]
Stable: 1 Stability: 1.1 - 活発な開発
Permission Modelを使用する場合、プロセスはデフォルトでは子プロセスを生成できません。Node.jsの起動時にユーザーが明示的に--allow-child-process
フラグを渡さない限り、子プロセスを生成しようとするとERR_ACCESS_DENIED
がスローされます。
例:
const childProcess = require('node:child_process');
// パーミッションを回避しようとします
childProcess.spawn('node', ['-e', 'require("fs").writeFileSync("/new-file", "example")']);
$ node --permission --allow-fs-read=* index.js
node:internal/child_process:388
const err = this._handle.spawn(options);
^
Error: Access to this API has been restricted
at ChildProcess.spawn (node:internal/child_process:388:28)
at Object.spawn (node:child_process:723:9)
at Object.<anonymous> (/home/index.js:3:14)
at Module._compile (node:internal/modules/cjs/loader:1120:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1174:10)
at Module.load (node:internal/modules/cjs/loader:998:32)
at Module._load (node:internal/modules/cjs/loader:839:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47 {
code: 'ERR_ACCESS_DENIED',
permission: 'ChildProcess'
}
--allow-fs-read
[History]
Version | Changes |
---|---|
v23.5.0 | Permission Modelと--allow-fsフラグが安定版になりました。 |
v20.7.0 | カンマ(, )で区切られたパスは許可されなくなりました。 |
v20.0.0 | Added in: v20.0.0 |
[Stable: 2 - Stable]
Stable: 2 Stability: 2 - 安定版。
このフラグは、Permission Modelを使用して、ファイルシステムの読み取りパーミッションを設定します。
--allow-fs-read
フラグの有効な引数は次のとおりです。
*
- すべてのFileSystemRead
操作を許可します。- 複数の
--allow-fs-read
フラグを使用すると、複数のパスを許可できます。例:--allow-fs-read=/folder1/ --allow-fs-read=/folder1/
例は、File System Permissionsドキュメントにあります。
イニシャライザモジュールも許可する必要があります。次の例を考えてみてください。
$ node --permission index.js
Error: Access to this API has been restricted
at node:internal/main/run_main_module:23:47 {
code: 'ERR_ACCESS_DENIED',
permission: 'FileSystemRead',
resource: '/Users/rafaelgss/repos/os/node/index.js'
}
プロセスはindex.js
モジュールにアクセスする必要があります。
node --permission --allow-fs-read=/path/to/index.js index.js
--allow-fs-write
[履歴]
バージョン | 変更点 |
---|---|
v23.5.0 | パーミッションモデルと --allow-fs フラグが安定版になりました。 |
v20.7.0 | カンマ (, ) で区切られたパスは許可されなくなりました。 |
v20.0.0 | v20.0.0 で追加されました |
このフラグは、パーミッションモデルを使用してファイルシステムの書き込みパーミッションを構成します。
--allow-fs-write
フラグの有効な引数は次のとおりです。
*
- すべてのFileSystemWrite
操作を許可します。- 複数の
--allow-fs-write
フラグを使用すると、複数のパスを許可できます。 例:--allow-fs-write=/folder1/ --allow-fs-write=/folder1/
カンマ (,
) で区切られたパスは許可されなくなりました。 カンマ付きの単一のフラグを渡すと、警告が表示されます。
例は、ファイルシステムパーミッションのドキュメントにあります。
--allow-wasi
追加: v22.3.0, v20.16.0
パーミッションモデルを使用する場合、プロセスはデフォルトで WASI インスタンスを作成できません。 セキュリティ上の理由から、ユーザーがメインの Node.js プロセスで明示的にフラグ --allow-wasi
を渡さない限り、呼び出しは ERR_ACCESS_DENIED
をスローします。
例:
const { WASI } = require('node:wasi');
// パーミッションをバイパスしようとする
new WASI({
version: 'preview1',
// ファイルシステム全体をマウントしようとする
preopens: {
'/': '/',
},
});
$ node --permission --allow-fs-read=* index.js
Error: Access to this API has been restricted
at node:internal/main/run_main_module:30:49 {
code: 'ERR_ACCESS_DENIED',
permission: 'WASI',
}
--allow-worker
追加: v20.0.0
パーミッションモデルを使用する場合、プロセスはデフォルトで worker スレッドを作成できません。 セキュリティ上の理由から、ユーザーがメインの Node.js プロセスで明示的にフラグ --allow-worker
を渡さない限り、呼び出しは ERR_ACCESS_DENIED
をスローします。
例:
const { Worker } = require('node:worker_threads');
// パーミッションをバイパスしようとする
new Worker(__filename);
$ node --permission --allow-fs-read=* index.js
Error: Access to this API has been restricted
at node:internal/main/run_main_module:17:47 {
code: 'ERR_ACCESS_DENIED',
permission: 'WorkerThreads'
}
--build-snapshot
追加: v18.8.0
プロセスが終了するときにスナップショット blob を生成してディスクに書き込みます。これは後で --snapshot-blob
でロードできます。
スナップショットを構築するときに、--snapshot-blob
が指定されていない場合、生成された blob はデフォルトで現在の作業ディレクトリの snapshot.blob
に書き込まれます。それ以外の場合は、--snapshot-blob
で指定されたパスに書き込まれます。
$ echo "globalThis.foo = 'I am from the snapshot'" > snapshot.js
# アプリケーションを初期化し、その状態を snapshot.blob にスナップショットするために snapshot.js を実行します。 {#run-snapshotjs-to-initialize-the-application-and-snapshot-the}
$ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js
$ echo "console.log(globalThis.foo)" > index.js
# 生成されたスナップショットをロードし、index.js からアプリケーションを起動します。 {#state-of-it-into-snapshotblob}
$ node --snapshot-blob snapshot.blob index.js
I am from the snapshot
v8.startupSnapshot
API を使用して、スナップショットの構築時にエントリポイントを指定できます。これにより、デシリアライズ時に追加のエントリスクリプトは不要になります。
$ echo "require('v8').startupSnapshot.setDeserializeMainFunction(() => console.log('I am from the snapshot'))" > snapshot.js
$ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js
$ node --snapshot-blob snapshot.blob
I am from the snapshot
詳細については、v8.startupSnapshot
API のドキュメントを確認してください。
現在、実行時スナップショットのサポートは試験的です。
--build-snapshot-config
追加: v21.6.0, v20.12.0
スナップショットの作成動作を構成する JSON 構成ファイルへのパスを指定します。
現在、次のオプションがサポートされています。
builder
<string> 必須。--build-snapshot
がメインスクリプト名としてbuilder
で渡された場合と同様に、スナップショットを構築する前に実行されるスクリプトの名前を提供します。withoutCodeCache
<boolean> オプション。コードキャッシュを含めると、スナップショットに含まれる関数のコンパイルに費やす時間を短縮できますが、スナップショットのサイズが大きくなり、スナップショットの移植性が損なわれる可能性があります。
このフラグを使用する場合、コマンドラインで提供される追加のスクリプトファイルは実行されず、代わりに通常のコマンドライン引数として解釈されます。
-c
, --check
[履歴]
バージョン | 変更点 |
---|---|
v10.0.0 | --require オプションがファイルのチェック時にサポートされるようになりました。 |
v5.0.0, v4.2.0 | Added in: v5.0.0, v4.2.0 |
実行せずにスクリプトの構文をチェックします。
--completion-bash
Added in: v10.12.0
Node.js のソース可能な 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 | Added in: v14.9.0, v12.19.0 |
カスタムの条件付きエクスポート解決条件を提供します。
任意の数のカスタム文字列条件名を許可します。
"node"
、"default"
、"import"
、"require"
のデフォルトの Node.js 条件は、常に定義どおりに適用されます。
たとえば、「development」解決でモジュールを実行するには:
node -C development app.js
--cpu-prof
[履歴]
バージョン | 変更点 |
---|---|
v22.4.0, v20.16.0 | --cpu-prof フラグが安定版になりました。 |
v12.0.0 | Added in: v12.0.0 |
起動時に V8 CPU プロファイラを開始し、終了前に CPU プロファイルをディスクに書き込みます。
--cpu-prof-dir
が指定されていない場合、生成されたプロファイルは現在の作業ディレクトリに配置されます。
--cpu-prof-name
が指定されていない場合、生成されたプロファイルの名前は CPU.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.cpuprofile
になります。
$ node --cpu-prof index.js
$ ls *.cpuprofile
CPU.20190409.202950.15293.0.0.cpuprofile
--cpu-prof-dir
[履歴]
バージョン | 変更点 |
---|---|
v22.4.0, v20.16.0 | --cpu-prof フラグが安定版になりました。 |
v12.0.0 | Added in: v12.0.0 |
--cpu-prof
によって生成された CPU プロファイルを配置するディレクトリを指定します。
デフォルト値は、--diagnostic-dir
コマンドラインオプションによって制御されます。
--cpu-prof-interval
[履歴]
バージョン | 変更点 |
---|---|
v22.4.0, v20.16.0 | --cpu-prof フラグが安定版になりました。 |
v12.2.0 | 追加: v12.2.0 |
--cpu-prof
で生成される CPU プロファイルのサンプリング間隔をマイクロ秒単位で指定します。 デフォルトは 1000 マイクロ秒です。
--cpu-prof-name
[履歴]
バージョン | 変更点 |
---|---|
v22.4.0, v20.16.0 | --cpu-prof フラグが安定版になりました。 |
v12.0.0 | 追加: v12.0.0 |
--cpu-prof
で生成される CPU プロファイルの名前を指定します。
--diagnostic-dir=directory
すべての診断出力ファイルを書き込むディレクトリを設定します。 デフォルトは現在の作業ディレクトリです。
次のデフォルトの出力ディレクトリに影響します。
--disable-proto=mode
追加: v13.12.0, v12.17.0
Object.prototype.__proto__
プロパティを無効にします。 mode
が delete
の場合、プロパティは完全に削除されます。 mode
が throw
の場合、プロパティへのアクセスはコード ERR_PROTO_ACCESS
で例外をスローします。
--disable-warning=code-or-type
追加: v21.3.0, v20.11.0
code
または type
で特定のプロセスの警告を無効にします。
process.emitWarning()
から出力される警告には、code
および type
が含まれている場合があります。 このオプションは、一致する code
または type
を持つ警告を出力しません。
非推奨の警告のリスト。
Node.js コアの警告の種類は、DeprecationWarning
および ExperimentalWarning
です。
たとえば、次のスクリプトは、node --disable-warning=DEP0025
で実行すると、DEP0025 require('node:sys')
を出力しません。
import sys from 'node:sys';
const sys = require('node:sys');
たとえば、次のスクリプトは、DEP0025 require('node:sys')
を出力しますが、node --disable-warning=ExperimentalWarning
で実行すると、(<=v21 の ExperimentalWarning: vm.measureMemory
は実験的な機能です など) 実験的な警告は出力しません。
import sys from 'node:sys';
import vm from 'node:vm';
vm.measureMemory();
const sys = require('node:sys');
const vm = require('node:vm');
vm.measureMemory();
--disable-wasm-trap-handler
追加: v22.2.0, v20.15.0
デフォルトでは、Node.js はトラップハンドラーベースの WebAssembly バウンドチェックを有効にします。その結果、V8 は WebAssembly からコンパイルされたコードにインラインバウンドチェックを挿入する必要がなくなり、WebAssembly の実行が大幅に高速化される可能性があります。ただし、この最適化には大きな仮想メモリケージ(現在は 10GB)の割り当てが必要です。システム構成またはハードウェアの制限により、Node.js プロセスが十分に大きな仮想メモリアドレス空間にアクセスできない場合、ユーザーはこの仮想メモリケージで割り当てを伴う WebAssembly を実行できなくなり、メモリ不足エラーが発生します。
$ ulimit -v 5000000
$ node -p "new WebAssembly.Memory({ initial: 10, maximum: 100 });"
[eval]:1
new WebAssembly.Memory({ initial: 10, maximum: 100 });
^
RangeError: WebAssembly.Memory(): could not allocate memory
at [eval]:1:1
at runScriptInThisContext (node:internal/vm:209:10)
at node:internal/process/execution:118:14
at [eval]-wrapper:6:24
at runScript (node:internal/process/execution:101:62)
at evalScript (node:internal/process/execution:136:3)
at node:internal/main/eval_string:49:3
--disable-wasm-trap-handler
はこの最適化を無効にするため、Node.js プロセスで利用可能な仮想メモリアドレス空間が V8 WebAssembly メモリケージに必要なものよりも小さい場合でも、ユーザーは少なくとも(最適ではないパフォーマンスで)WebAssembly を実行できます。
--disallow-code-generation-from-strings
追加: v9.8.0
文字列からコードを生成する eval
や new Function
のような組み込み言語機能を例外をスローするようにします。これは Node.js node:vm
モジュールには影響しません。
--dns-result-order=order
[履歴]
バージョン | 変更 |
---|---|
v22.1.0, v20.13.0 | ipv6first がサポートされるようになりました。 |
v17.0.0 | デフォルト値を verbatim に変更しました。 |
v16.4.0, v14.18.0 | 追加: v16.4.0, v14.18.0 |
dns.lookup()
と dnsPromises.lookup()
で order
のデフォルト値を設定します。値は次のいずれかになります。
ipv4first
: デフォルトのorder
をipv4first
に設定します。ipv6first
: デフォルトのorder
をipv6first
に設定します。verbatim
: デフォルトのorder
をverbatim
に設定します。
デフォルトは verbatim
であり、dns.setDefaultResultOrder()
は --dns-result-order
よりも優先度が高くなります。
--enable-fips
Added in: v6.0.0
起動時に FIPS 準拠の暗号化を有効にします。(Node.js が FIPS 互換の OpenSSL に対してビルドされている必要があります。)
--enable-network-family-autoselection
Added in: v18.18.0
接続オプションで明示的に無効にしない限り、family 自動選択アルゴリズムを有効にします。
--enable-source-maps
[履歴]
バージョン | 変更点 |
---|---|
v15.11.0, v14.18.0 | この API は実験的ではなくなりました。 |
v12.12.0 | Added in: v12.12.0 |
スタックトレースの Source Map v3 サポートを有効にします。
TypeScript などのトランスパイラを使用する場合、アプリケーションによってスローされるスタックトレースは、元のソース位置ではなく、トランスパイルされたコードを参照します。--enable-source-maps
は、ソースマップのキャッシュを有効にし、元のソースファイルに対するスタックトレースを報告するように最善を尽くします。
Error.prepareStackTrace
をオーバーライドすると、--enable-source-maps
がスタックトレースを変更できなくなる場合があります。ソースマップでスタックトレースを変更するには、オーバーライド関数で元の Error.prepareStackTrace
の結果を呼び出して返します。
const originalPrepareStackTrace = Error.prepareStackTrace;
Error.prepareStackTrace = (error, trace) => {
// エラーとトレースを変更し、元の Error.prepareStackTrace でスタックトレースをフォーマットします。
return originalPrepareStackTrace(error, trace);
};
注: ソースマップを有効にすると、Error.stack
にアクセスするときにアプリケーションにレイテンシが発生する可能性があります。アプリケーションで Error.stack
に頻繁にアクセスする場合は、--enable-source-maps
のパフォーマンスへの影響を考慮してください。
--entry-url
Added in: v23.0.0
存在する場合、Node.js はエントリポイントをパスではなく URL として解釈します。
ECMAScript モジュール の解決規則に従います。
URL 内のクエリパラメータまたはハッシュは、import.meta.url
を介してアクセスできます。
node --entry-url 'file:///path/to/file.js?queryparams=work#and-hashes-too'
node --entry-url --experimental-strip-types 'file.ts?query#hash'
node --entry-url 'data:text/javascript,console.log("Hello")'
--env-file-if-exists=config
Added in: v22.9.0
挙動は--env-file
と同じですが、ファイルが存在しない場合にエラーはスローされません。
--env-file=config
[沿革]
バージョン | 変更点 |
---|---|
v21.7.0, v20.12.0 | 複数行の値のサポートを追加。 |
v20.6.0 | Added in: v20.6.0 |
現在のディレクトリを基準としたファイルから環境変数をロードし、process.env
上のアプリケーションで利用できるようにします。Node.jsを構成する環境変数(NODE_OPTIONS
など)は、パースされ適用されます。同じ変数が環境とファイルの両方で定義されている場合、環境の値が優先されます。
複数の--env-file
引数を渡すことができます。後続のファイルは、以前のファイルで定義された既存の変数を上書きします。
ファイルが存在しない場合、エラーがスローされます。
node --env-file=.env --env-file=.development.env index.js
ファイルの形式は、環境変数名と値を =
で区切ったキーと値のペアを1行に1つ記述する必要があります。
PORT=3000
#
の後のテキストはコメントとして扱われます。
# これはコメントです {#--env-file=config}
PORT=3000 # これもコメントです
値は、```, "
または '
の引用符で始まり、終わることができます。それらは値から省略されます。
USERNAME="nodejs" # `nodejs` が値になります。
複数行の値がサポートされています。
MULTI_LINE="THIS IS
A MULTILINE"
# `THIS IS\nA MULTILINE` が値になります。 {#this-is-a-comment}
キーの前の Export キーワードは無視されます。
export USERNAME="nodejs" # `nodejs` が値になります。
存在しない可能性のあるファイルから環境変数をロードする場合は、代わりに--env-file-if-exists
フラグを使用できます。
-e
, --eval "script"
{#will-result-in-this-is\na-multiline-as-the-value}
[履歴]
バージョン | 変更点 |
---|---|
v22.6.0 | Eval は実験的な型削除をサポートするようになりました。 |
v5.11.0 | 組み込みライブラリが事前定義された変数として利用可能になりました。 |
v0.5.2 | 追加: v0.5.2 |
以下の引数を JavaScript として評価します。REPL で事前定義されているモジュールも script
で使用できます。
Windows では、cmd.exe
を使用している場合、引用符としてダブルクォート "
のみ認識するため、シングルクォートは正しく機能しません。Powershell または Git bash では、'
と "
の両方が使用可能です。
--experimental-strip-types
を渡すことで、インライン型を含むコードを実行できます。
--experimental-async-context-frame
追加: v22.7.0
async_hooks に依存するデフォルトの実装ではなく、AsyncContextFrame
によって裏打ちされた AsyncLocalStorage
の使用を有効にします。この新しいモデルは非常に異なる方法で実装されているため、アプリケーション内でのコンテキストデータの流れに違いがある可能性があります。そのため、本番環境で使用する前に、この変更によってアプリケーションの動作に影響がないことを確認することをお勧めします。
--experimental-eventsource
追加: v22.3.0, v20.18.0
グローバルスコープでの EventSource Web API の公開を有効にします。
--experimental-import-meta-resolve
[履歴]
バージョン | 変更点 |
---|---|
v20.6.0, v18.19.0 | 同期的な import.meta.resolve がデフォルトで利用可能になり、以前サポートされていた実験的な第2引数を有効にするためのフラグが保持されました。 |
v13.9.0, v12.16.2 | 追加: v13.9.0, v12.16.2 |
実験的な import.meta.resolve()
の親 URL サポートを有効にします。これにより、コンテキストに応じた解決のために2番目の parentURL
引数を渡すことができます。
以前は、import.meta.resolve
機能全体を制御していました。
--experimental-loader=module
[履歴]
バージョン | 変更 |
---|---|
v12.11.1 | このフラグの名前が --loader から --experimental-loader に変更されました。 |
v8.8.0 | 追加: v8.8.0 |
エクスポートされたモジュールカスタマイズフックを含む module
を指定します。module
は、import
指定子として受け入れられる任意の文字列で構いません。
--experimental-network-inspection
追加: v22.6.0, v20.18.0
Chrome DevToolsを使用したネットワークインスペクションの実験的サポートを有効にします。
--experimental-print-required-tla
追加: v22.0.0, v20.17.0
require()
されているESモジュールにトップレベルのawait
が含まれている場合、このフラグを使用すると、Node.jsがモジュールを評価し、トップレベルのawaitを見つけようとし、それらの場所を出力して、ユーザーがそれらを見つけやすくすることができます。
--experimental-require-module
[履歴]
バージョン | 変更 |
---|---|
v23.0.0 | これはデフォルトで true になりました。 |
v22.0.0, v20.17.0 | 追加: v22.0.0, v20.17.0 |
require()
で同期的なESモジュールグラフのロードをサポートします。
require()
を使用した ECMAScript モジュールの読み込み を参照してください。
--experimental-sea-config
追加: v20.0.0
このフラグを使用して、Node.jsバイナリに注入して単一実行可能アプリケーションを生成できるblobを生成します。詳細については、この構成に関するドキュメントを参照してください。
--experimental-shadow-realm
追加: v19.0.0, v18.13.0
このフラグを使用して、ShadowRealm のサポートを有効にします。
--experimental-strip-types
追加: v22.6.0
TypeScriptファイルの実験的な型ストリッピングを有効にします。詳細については、TypeScript型ストリッピングのドキュメントを参照してください。
--experimental-test-coverage
[履歴]
バージョン | 変更点 |
---|---|
v20.1.0, v18.17.0 | このオプションは--test で使用できます。 |
v19.7.0, v18.15.0 | 追加: v19.7.0, v18.15.0 |
node:test
モジュールと組み合わせて使用すると、コードカバレッジレポートがテストランナー出力の一部として生成されます。テストが実行されない場合、カバレッジレポートは生成されません。詳細については、テストからコードカバレッジを収集するのドキュメントを参照してください。
--experimental-test-isolation=mode
追加: v22.8.0
テストランナーで使用されるテスト分離の種類を設定します。 mode
が'process'
の場合、各テストファイルは個別の子プロセスで実行されます。 mode
が'none'
の場合、すべてのテストファイルはテストランナーと同じプロセスで実行されます。デフォルトの分離モードは'process'
です。このフラグは、--test
フラグが存在しない場合は無視されます。詳細については、テストランナーの実行モデルセクションを参照してください。
--experimental-test-module-mocks
追加: v22.3.0, v20.18.0
テストランナーでモジュールモックを有効にします。
--experimental-transform-types
Added in: v22.7.0
[Stable: 1 - Experimental]
Stable: 1 Stability: 1.1 - 開発中
TypeScript のみの構文を JavaScript コードに変換できるようにします。--experimental-strip-types
と --enable-source-maps
を暗黙的に指定します。
--experimental-vm-modules
Added in: v9.6.0
node:vm
モジュールで実験的な ES モジュールサポートを有効にします。
--experimental-wasi-unstable-preview1
[History]
Version | Changes |
---|---|
v20.0.0, v18.17.0 | このオプションは、WASI がデフォルトで有効になっているため不要になりましたが、引き続き渡すことができます。 |
v13.6.0 | --experimental-wasi-unstable-preview0 から --experimental-wasi-unstable-preview1 に変更されました。 |
v13.3.0, v12.16.0 | Added in: v13.3.0, v12.16.0 |
実験的な WebAssembly System Interface (WASI) サポートを有効にします。
--experimental-wasm-modules
Added in: v12.3.0
実験的な WebAssembly モジュールサポートを有効にします。
--experimental-webstorage
Added in: v22.4.0
実験的な Web Storage
サポートを有効にします。
--expose-gc
Added in: v22.3.0, v20.18.0
[Stable: 1 - Experimental]
Stable: 1 Stability: 1 - 試験的。このフラグは V8 から継承されたものであり、アップストリームで変更される可能性があります。
このフラグは、V8 の gc 拡張機能を公開します。
if (globalThis.gc) {
globalThis.gc();
}
--force-context-aware
Added in: v12.12.0
context-aware ではないネイティブアドオンのロードを無効にします。
--force-fips
Added in: v6.0.0
起動時に FIPS 準拠の暗号化を強制します。(スクリプトコードから無効にすることはできません。)(--enable-fips
と同じ要件です。)
--force-node-api-uncaught-exceptions-policy
Added in: v18.3.0, v16.17.0
Node-API 非同期コールバックで uncaughtException
イベントを強制します。
既存のアドオンがプロセスをクラッシュさせるのを防ぐため、このフラグはデフォルトでは有効になっていません。将来的には、正しい動作を強制するために、このフラグがデフォルトで有効になります。
--frozen-intrinsics
追加: v11.12.0
Array
や Object
のような実験的な凍結された組み込み関数を有効にします。
ルートコンテキストのみがサポートされています。globalThis.Array
が実際にデフォルトの組み込み関数への参照であるという保証はありません。このフラグの下ではコードが壊れる可能性があります。
ポリフィルを追加できるようにするために、--require
と --import
は両方とも組み込み関数の凍結前に実行されます。
--heap-prof
[履歴]
バージョン | 変更点 |
---|---|
v22.4.0, v20.16.0 | --heap-prof フラグが安定版になりました。 |
v12.4.0 | 追加: v12.4.0 |
起動時に V8 ヒーププロファイラを開始し、終了前にヒーププロファイルをディスクに書き込みます。
--heap-prof-dir
が指定されていない場合、生成されたプロファイルは現在の作業ディレクトリに配置されます。
--heap-prof-name
が指定されていない場合、生成されたプロファイルの名前は Heap.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.heapprofile
になります。
$ node --heap-prof index.js
$ ls *.heapprofile
Heap.20190409.202950.15293.0.001.heapprofile
--heap-prof-dir
[履歴]
バージョン | 変更点 |
---|---|
v22.4.0, v20.16.0 | --heap-prof フラグが安定版になりました。 |
v12.4.0 | 追加: v12.4.0 |
--heap-prof
によって生成されたヒーププロファイルが配置されるディレクトリを指定します。
デフォルト値は、--diagnostic-dir
コマンドラインオプションによって制御されます。
--heap-prof-interval
[履歴]
バージョン | 変更点 |
---|---|
v22.4.0, v20.16.0 | --heap-prof フラグが安定版になりました。 |
v12.4.0 | 追加: v12.4.0 |
--heap-prof
によって生成されるヒーププロファイルの平均サンプリング間隔をバイト単位で指定します。デフォルトは 512 * 1024 バイトです。
--heap-prof-name
[履歴]
バージョン | 変更 |
---|---|
v22.4.0, v20.16.0 | --heap-prof フラグが安定版になりました。 |
v12.4.0 | 追加: v12.4.0 |
--heap-prof
によって生成されるヒーププロファイルファイル名を指定します。
--heapsnapshot-near-heap-limit=max_count
追加: v15.1.0, v14.18.0
V8ヒープの使用量がヒープ制限に近づくと、V8ヒープスナップショットをディスクに書き込みます。count
は負でない整数でなければなりません(その場合、Node.jsは最大 max_count
個のスナップショットをディスクに書き込みます)。
スナップショットを生成するときに、ガベージコレクションがトリガーされ、ヒープの使用量が低下する可能性があります。したがって、Node.jsインスタンスが最終的にメモリ不足になる前に、複数のスナップショットがディスクに書き込まれる場合があります。これらのヒープスナップショットを比較して、連続するスナップショットの取得中にどのオブジェクトが割り当てられているかを判断できます。Node.jsが正確に max_count
個のスナップショットをディスクに書き込むことは保証されていませんが、max_count
が 0
より大きい場合、Node.jsインスタンスがメモリ不足になる前に、少なくとも1つ、最大で max_count
個のスナップショットを生成するように最善を尽くします。
V8スナップショットの生成には、時間とメモリが必要です(V8ヒープによって管理されるメモリと、V8ヒープ外のネイティブメモリの両方)。ヒープが大きいほど、より多くのリソースが必要です。Node.jsは、追加のV8ヒープメモリのオーバーヘッドに対応するようにV8ヒープを調整し、プロセスが利用できるすべてのメモリを使い果たさないように最善を尽くします。プロセスがシステムが適切と見なすよりも多くのメモリを使用すると、システムの構成に応じて、システムによってプロセスが突然終了される場合があります。
$ 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
は有効なシグナル名である必要があります。 デフォルトでは無効になっています。
$ node --heapsnapshot-signal=SIGUSR2 index.js &
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
node 1 5.5 6.1 787252 247004 ? Ssl 16:43 0:02 node --heapsnapshot-signal=SIGUSR2 index.js
$ kill -USR2 1
$ ls
Heap.20190718.133405.15554.0.001.heapsnapshot
-h
, --help
追加: v0.1.3
node コマンドラインオプションを出力します。 このオプションの出力は、このドキュメントよりも詳細ではありません。
--icu-data-dir=file
追加: v0.11.15
ICU データロードパスを指定します。(NODE_ICU_DATA
を上書きします。)
--import=module
追加: v19.0.0, v18.18.0
起動時に指定されたモジュールをプリロードします。 フラグが複数回指定された場合、各モジュールは、NODE_OPTIONS
で指定されたものから順に、表示される順に順番に実行されます。
ECMAScript モジュール の解決規則に従います。 CommonJS モジュール をロードするには、--require
を使用します。 --require
でプリロードされたモジュールは、--import
でプリロードされたモジュールよりも前に実行されます。
モジュールは、メインスレッドだけでなく、ワーカー スレッド、フォークされたプロセス、またはクラスタ化されたプロセスにもプリロードされます。
--input-type=type
追加: v12.0.0
これは、Node.js が --eval
または STDIN
入力を CommonJS または ES モジュールとして解釈するように構成します。 有効な値は "commonjs"
または "module"
です。 デフォルトは "commonjs"
です。
REPL はこのオプションをサポートしていません。 --print
で --input-type=module
を使用すると、--print
が ES モジュールの構文をサポートしていないため、エラーがスローされます。
--insecure-http-parser
追加: v13.4.0, v12.15.0, v10.19.0
HTTP パーサーで寛容フラグを有効にします。これにより、非準拠の HTTP 実装との相互運用が可能になる場合があります。
有効にすると、パーサーは以下を受け入れます。
- 無効な HTTP ヘッダー値。
- 無効な HTTP バージョン。
Transfer-Encoding
とContent-Length
ヘッダーの両方を含むメッセージを許可します。Connection: close
が存在する場合、メッセージの後の余分なデータを許可します。chunked
が提供された後、追加の転送エンコーディングを許可します。\r\n
の代わりに\n
をトークン区切り文字として使用することを許可します。- チャンクの後に
\r\n
を提供しないことを許可します。 - チャンクサイズの後と
\r\n
の前にスペースが存在することを許可します。
上記のすべては、アプリケーションをリクエストスマグリングまたはポイズニング攻撃にさらします。このオプションの使用は避けてください。
警告: パブリック IP:ポートの組み合わせにインスペクターをバインドすることは安全ではありません
開いているポートを持つパブリック IP ( 0.0.0.0
を含む) にインスペクターをバインドすることは安全ではありません。外部ホストがインスペクターに接続し、リモートコード実行攻撃を実行できるようになるためです。
ホストを指定する場合は、次のいずれかを確認してください。
- ホストがパブリックネットワークからアクセスできない。
- ファイアウォールがポート上の不要な接続を許可しない。
より具体的には、ポート(デフォルトでは 9229
)がファイアウォールで保護されていない場合、--inspect=0.0.0.0
は安全ではありません。
詳細については、デバッグのセキュリティに関する考慮事項セクションを参照してください。
--inspect-brk[=[host:]port]
追加: v7.6.0
host:port
でインスペクターをアクティブにし、ユーザースクリプトの開始時に中断します。デフォルトの host:port
は 127.0.0.1:9229
です。ポート 0
が指定されている場合は、ランダムに使用可能なポートが使用されます。
Node.js デバッガーの詳細については、Node.js 用の V8 インスペクター統合を参照してください。
--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]
Added in: v22.2.0, v20.15.0
host:port
でインスペクターをアクティブにし、デバッガーが接続されるのを待ちます。デフォルトの host:port
は 127.0.0.1:9229
です。ポート 0
が指定された場合、ランダムに利用可能なポートが使用されます。
Node.js デバッガーの詳細については、Node.js の V8 インスペクター統合 を参照してください。
--inspect[=[host:]port]
Added in: 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
Added in: v0.7.7
stdin が端末ではないと思われる場合でも、REPL を開きます。
--jitless
Added in: v12.0.0
[Stable: 1 - Experimental]
Stable: 1 Stability: 1 - 実験的。このフラグは V8 から継承されており、上流で変更される可能性があります。
実行可能メモリのランタイム割り当てを無効にします。これは、セキュリティ上の理由から一部のプラットフォームで必要になる場合があります。また、他のプラットフォームでの攻撃対象領域を減らすこともできますが、パフォーマンスへの影響は深刻になる可能性があります。
--localstorage-file=file
Added in: v22.4.0
localStorage
データの保存に使用されるファイル。ファイルが存在しない場合は、localStorage
に最初にアクセスしたときに作成されます。同じファイルを複数の Node.js プロセスで同時に共有できます。このフラグは、Node.js が --experimental-webstorage
フラグで起動されていない限り、何もしません。
--max-http-header-size=size
[履歴]
バージョン | 変更 |
---|---|
v13.13.0 | HTTPヘッダーの最大デフォルトサイズを8 KiBから16 KiBに変更。 |
v11.6.0, v10.15.0 | 追加: v11.6.0, v10.15.0 |
HTTPヘッダーの最大サイズをバイト単位で指定します。デフォルトは16 KiBです。
--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++ アドオンの require は失敗し、例外がスローされます。
--no-deprecation
追加: v0.8.0
非推奨の警告を抑制します。
--no-experimental-detect-module
[履歴]
バージョン | 変更 |
---|---|
v22.7.0 | 構文検出がデフォルトで有効になりました。 |
v21.1.0, v20.10.0 | 追加: v21.1.0, v20.10.0 |
構文検出を使用してモジュールタイプを決定することを無効にします。
--no-experimental-global-navigator
追加: v21.2.0
グローバルスコープでの Navigator API の公開を無効にします。
--no-experimental-repl-await
追加: v16.6.0
このフラグを使用して、REPL でのトップレベル await を無効にします。
--no-experimental-require-module
[履歴]
バージョン | 変更 |
---|---|
v23.0.0 | これはデフォルトで false になりました。 |
v22.0.0, v20.17.0 | 追加: v22.0.0, v20.17.0 |
require()
での同期 ES モジュールグラフのロードのサポートを無効にします。
require() を使用した ECMAScript モジュールのロード を参照してください。
--no-experimental-sqlite
[履歴]
バージョン | 変更点 |
---|---|
v23.4.0 | SQLiteのフラグは解除されましたが、まだ実験的です。 |
v22.5.0 | 追加: v22.5.0 |
実験的な node:sqlite
モジュールを無効にします。
--no-experimental-websocket
追加: v22.0.0
グローバルスコープでの WebSocket
の公開を無効にします。
--no-extra-info-on-fatal-exception
追加: v17.0.0
終了を引き起こす致命的な例外に関する追加情報を非表示にします。
--no-force-async-hooks-checks
追加: v9.0.0
async_hooks
のランタイムチェックを無効にします。 これらは、async_hooks
が有効になっている場合は、動的に有効になります。
--no-global-search-paths
追加: v16.10.0
$HOME/.node_modules
や $NODE_PATH
のようなグローバルパスからモジュールを検索しません。
--no-network-family-autoselection
[履歴]
バージョン | 変更点 |
---|---|
v20.0.0 | フラグの名前が --no-enable-network-family-autoselection から --no-network-family-autoselection に変更されました。 古い名前はエイリアスとして引き続き機能します。 |
v19.4.0 | 追加: v19.4.0 |
接続オプションで明示的に有効にしない限り、ファミリーの自動選択アルゴリズムを無効にします。
--no-warnings
追加: v6.0.0
すべてのプロセスの警告(非推奨を含む)を抑制します。
--node-memory-debug
追加: v15.0.0, v14.18.0
Node.js内部のメモリリークに対する追加のデバッグチェックを有効にします。 これは通常、Node.js自体をデバッグする開発者にのみ役立ちます。
--openssl-config=file
追加: v6.9.0
起動時にOpenSSL構成ファイルをロードします。 特に、Node.jsがFIPS対応のOpenSSLに対して構築されている場合、これを使用してFIPS準拠の暗号化を有効にできます。
--openssl-legacy-provider
追加: v17.0.0, v16.17.0
OpenSSL 3.0レガシープロバイダーを有効にします。 詳細については、OSSL_PROVIDER-legacyを参照してください。
--openssl-shared-config
追加: v18.5.0, v16.17.0, v14.21.0
OpenSSLのデフォルト構成セクションである openssl_conf
がOpenSSL構成ファイルから読み込まれるようにします。 デフォルトの構成ファイルは openssl.cnf
という名前ですが、これは環境変数 OPENSSL_CONF
を使用するか、コマンドラインオプション --openssl-config
を使用して変更できます。 デフォルトのOpenSSL構成ファイルの場所は、OpenSSLがNode.jsにどのようにリンクされているかによって異なります。 OpenSSL構成を共有すると、予期しない影響が生じる可能性があるため、Node.jsに固有の構成セクションである nodejs_conf
を使用することをお勧めします。これは、このオプションが使用されていない場合のデフォルトです。
--pending-deprecation
追加: v8.0.0
保留中の非推奨警告を発行します。
保留中の非推奨は一般的にランタイムの非推奨と同一ですが、デフォルトで オフ になっており、--pending-deprecation
コマンドラインフラグまたは NODE_PENDING_DEPRECATION=1
環境変数が設定されない限り発行されない点が異なります。保留中の非推奨は、開発者が非推奨の API 使用を検出するために活用できる、一種の選択的な "早期警告" メカニズムを提供するために使用されます。
--permission
[履歴]
バージョン | 変更点 |
---|---|
v23.5.0 | 許可モデルが安定しました。 |
v20.0.0 | 追加: v20.0.0 |
現在のプロセスに対して許可モデルを有効にします。有効にすると、次の許可が制限されます。
- ファイルシステム -
--allow-fs-read
,--allow-fs-write
フラグで管理可能 - 子プロセス -
--allow-child-process
フラグで管理可能 - Workerスレッド -
--allow-worker
フラグで管理可能 - WASI -
--allow-wasi
フラグで管理可能 - アドオン -
--allow-addons
フラグで管理可能
--preserve-symlinks
追加: v6.3.0
モジュールを解決およびキャッシュするときに、シンボリックリンクを保持するようにモジュールローダーに指示します。
デフォルトでは、Node.js がシンボリックリンクされている別のディスク上の場所からモジュールをロードする場合、Node.js はリンクを解決し、モジュールの実際のディスク上の "実パス" を識別子として、また他の依存モジュールを見つけるためのルートパスとして使用します。ほとんどの場合、このデフォルトの動作で問題ありません。ただし、以下の例に示すように、シンボリックリンクされたピア依存関係を使用する場合、moduleA
が moduleB
をピア依存関係として require しようとすると、デフォルトの動作により例外がスローされます。
{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
も使用します。
--preserve-symlinks-main
Added in: v10.2.0
モジュールローダーに、メインモジュール (require.main
) を解決してキャッシュするときにシンボリックリンクを保持するように指示します。
このフラグが存在するのは、メインモジュールが、--preserve-symlinks
が他のすべてのインポートに与えるのと同じ動作をオプトインできるようにするためです。ただし、古いバージョンのNode.jsとの下位互換性のために、これらは別々のフラグです。
--preserve-symlinks-main
は --preserve-symlinks
を意味しません。相対パスを解決する前にシンボリックリンクをたどることが望ましくない場合は、--preserve-symlinks-main
に加えて --preserve-symlinks
を使用してください。
詳細については、--preserve-symlinks
を参照してください。
-p
, --print "script"
[履歴]
バージョン | 変更点 |
---|---|
v5.11.0 | 組み込みライブラリが定義済みの変数として利用可能になりました。 |
v0.6.4 | Added in: v0.6.4 |
-e
と同じですが、結果を出力します。
--prof
Added in: v2.0.0
V8プロファイラー出力を生成します。
--prof-process
Added in: v5.2.0
V8オプション--prof
を使用して生成されたV8プロファイラー出力を処理します。
--redirect-warnings=file
Added in: v8.0.0
プロセス警告をstderrに出力する代わりに、指定されたファイルに書き込みます。ファイルが存在しない場合は作成され、存在する場合は追記されます。警告をファイルに書き込もうとしたときにエラーが発生した場合、警告は代わりにstderrに書き込まれます。
file
名は絶対パスでもかまいません。そうでない場合、書き込まれるデフォルトのディレクトリは、--diagnostic-dir
コマンドラインオプションによって制御されます。
--report-compact
Added in: 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 | Added in: v11.8.0 |
レポートが生成される場所。
--report-exclude-env
Added in: v23.3.0
--report-exclude-env
が渡されると、生成される診断レポートに environmentVariables
データが含まれません。
--report-exclude-network
Added in: 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 | Added in: 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 | Added in: 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 | Added in: 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 | Added in: 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 | Added in: v11.8.0 |
未処理の例外が原因でプロセスが終了したときにレポートが生成されるようにします。ネイティブスタックや他のランタイム環境データと組み合わせて JavaScript スタックを検査する場合に役立ちます。
-r
, --require module
Added in: v1.6.0
起動時に指定されたモジュールをプリロードします。
require()
のモジュール解決ルールに従います。module
は、ファイルへのパス、または node モジュール名である場合があります。
CommonJS モジュールのみがサポートされています。 ECMAScript モジュール をプリロードするには、--import
を使用してください。--require
でプリロードされたモジュールは、--import
でプリロードされたモジュールよりも先に実行されます。
モジュールは、メインスレッドだけでなく、すべてのワーカーースレッド、フォークされたプロセス、またはクラスタ化されたプロセスにプリロードされます。
--run
[履歴]
バージョン | 変更点 |
---|---|
v22.3.0 | NODE_RUN_SCRIPT_NAME 環境変数が追加されました。 |
v22.3.0 | NODE_RUN_PACKAGE_JSON_PATH 環境変数が追加されました。 |
v22.3.0 | ルートディレクトリまで遡って package.json ファイルを見つけ、そこからコマンドを実行し、それに応じて PATH 環境変数を更新します。 |
v22.0.0 | Added in: v22.0.0 |
これは、package.json の "scripts"
オブジェクトから指定されたコマンドを実行します。 "command"
が見つからない場合は、利用可能なスクリプトが一覧表示されます。
--run
はルートディレクトリまで遡って package.json
ファイルを見つけ、そこからコマンドを実行します。
--run
は、現在のディレクトリの各親の ./node_modules/.bin
を PATH
に追加して、複数の node_modules
ディレクトリが存在する異なるフォルダからバイナリを実行できるようにします ( ancestor-folder/node_modules/.bin
がディレクトリの場合)。
--run
は、関連する package.json
を含むディレクトリでコマンドを実行します。
たとえば、次のコマンドは、現在のフォルダにある package.json
の test
スクリプトを実行します。
$ node --run test
コマンドに引数を渡すこともできます。 --
の後の引数はすべて、スクリプトに追加されます。
$ node --run test -- --verbose
意図的な制限
node --run
は npm run
や他のパッケージマネージャーの run
コマンドの動作と一致することを意図していません。Node.js の実装は、最も一般的なユースケースにおいて最高のパフォーマンスに焦点を当てるため、意図的に制限されています。他の run
実装の一部の機能のうち、意図的に除外されているものは次のとおりです。
- 指定されたスクリプトに加えて、
pre
またはpost
スクリプトの実行。 - パッケージマネージャー固有の環境変数の定義。
環境変数
--run
でスクリプトを実行する際には、以下の環境変数が設定されます。
NODE_RUN_SCRIPT_NAME
: 実行されているスクリプトの名前。たとえば、--run
を使用してtest
を実行する場合、この変数の値はtest
になります。NODE_RUN_PACKAGE_JSON_PATH
: 処理されているpackage.json
へのパス。
--secure-heap-min=n
追加: v15.6.0
--secure-heap
を使用する場合、--secure-heap-min
フラグはセキュアヒープからの最小割り当てを指定します。最小値は 2
です。最大値は --secure-heap
または 2147483647
のいずれか小さい方です。指定された値は 2 の累乗である必要があります。
--secure-heap=n
追加: v15.6.0
n
バイトの OpenSSL セキュアヒープを初期化します。初期化されると、セキュアヒープは、キーの生成やその他の操作中に OpenSSL 内の選択された種類の割り当てに使用されます。これは、たとえば、ポインタのオーバーランまたはアンダーランによって機密情報が漏洩するのを防ぐのに役立ちます。
セキュアヒープは固定サイズであり、実行時にサイズ変更できないため、使用する場合は、すべてのアプリケーションの使用をカバーするのに十分な大きさのヒープを選択することが重要です。
指定されたヒープサイズは 2 の累乗である必要があります。2 未満の値はセキュアヒープを無効にします。
セキュアヒープはデフォルトで無効になっています。
セキュアヒープは Windows では利用できません。
詳細については、CRYPTO_secure_malloc_init
を参照してください。
--snapshot-blob=path
追加: v18.8.0
--build-snapshot
と共に使用すると、--snapshot-blob
は、生成されたスナップショットブロブが書き込まれるパスを指定します。指定されていない場合、生成されたブロブは現在の作業ディレクトリの snapshot.blob
に書き込まれます。
--build-snapshot
なしで使用すると、--snapshot-blob
は、アプリケーションの状態を復元するために使用されるブロブへのパスを指定します。
スナップショットをロードすると、Node.js は以下を確認します。
一致しない場合、Node.js はスナップショットのロードを拒否し、ステータスコード 1 で終了します。
--test
[履歴]
バージョン | 変更 |
---|---|
v20.0.0 | テストランナーが安定版になりました。 |
v19.2.0, v18.13.0 | テストランナーがウォッチモードでの実行をサポートするようになりました。 |
v18.1.0, v16.17.0 | v18.1.0、v16.17.0 で追加 |
Node.js コマンドラインテストランナーを起動します。このフラグは、--watch-path
、--check
、--eval
、--interactive
、またはインスペクターと組み合わせることはできません。詳細については、コマンドラインからのテストの実行に関するドキュメントを参照してください。
--test-concurrency
追加: v21.0.0, v20.10.0, v18.19.0
テストランナー CLI が同時実行するテストファイルの最大数。--experimental-test-isolation
が 'none'
に設定されている場合、このフラグは無視され、並行処理は 1 になります。それ以外の場合、並行処理はデフォルトで os.availableParallelism() - 1
になります。
--test-coverage-branches=threshold
追加: v22.8.0
カバーされるブランチの最小パーセントを要求します。コードカバレッジが指定されたしきい値に達しない場合、プロセスはコード 1
で終了します。
--test-coverage-exclude
追加: v22.5.0
絶対ファイルパスと相対ファイルパスの両方に一致する可能性のあるグロブパターンを使用して、コードカバレッジから特定のファイルを除外します。
このオプションを複数回指定して、複数のグロブパターンを除外できます。
--test-coverage-exclude
と --test-coverage-include
の両方が指定されている場合、ファイルはカバレッジレポートに含まれるために両方の基準を満たす必要があります。
デフォルトでは、一致するすべてのテストファイルがカバレッジレポートから除外されます。このオプションを指定すると、デフォルトの動作がオーバーライドされます。
--test-coverage-functions=threshold
追加: v22.8.0
カバーされる関数の最小パーセントを要求します。コードカバレッジが指定されたしきい値に達しない場合、プロセスはコード 1
で終了します。
--test-coverage-include
Added in: v22.5.0
[Stable: 1 - Experimental]
Stable: 1 Stability: 1 - 試験的
グロブパターンを使用してコードカバレッジに特定のファイルを含めます。グロブパターンは絶対ファイルパスと相対ファイルパスの両方に一致させることができます。
このオプションは、複数のグロブパターンを含めるために複数回指定できます。
--test-coverage-exclude
と --test-coverage-include
の両方が指定されている場合、ファイルはカバレッジレポートに含めるためには 両方 の条件を満たす必要があります。
--test-coverage-lines=threshold
Added in: v22.8.0
[Stable: 1 - Experimental]
Stable: 1 Stability: 1 - 試験的
カバーされた行の最小パーセントを要求します。コードカバレッジが指定された閾値に達しない場合、プロセスはコード 1
で終了します。
--test-force-exit
Added in: v22.0.0, v20.14.0
既知のテストがすべて実行を終了した後でも、イベントループがアクティブなままである場合でも、プロセスを終了するようにテストランナーを構成します。
--test-name-pattern
[History]
Version | Changes |
---|---|
v20.0.0 | テストランナーが安定版になりました。 |
v18.11.0 | Added in: v18.11.0 |
指定されたパターンに名前が一致するテストのみを実行するようにテストランナーを構成する正規表現。詳細については、名前によるテストのフィルタリングのドキュメントを参照してください。
--test-name-pattern
と --test-skip-pattern
の両方が指定されている場合、テストを実行するには 両方 の要件を満たす必要があります。
--test-only
[History]
Version | Changes |
---|---|
v20.0.0 | テストランナーが安定版になりました。 |
v18.0.0, v16.17.0 | Added in: v18.0.0, v16.17.0 |
only
オプションが設定されているトップレベルテストのみを実行するようにテストランナーを構成します。テスト分離が無効になっている場合、このフラグは必要ありません。
--test-reporter
[History]
Version | Changes |
---|---|
v20.0.0 | テストランナーが安定版になりました。 |
v19.6.0, v18.15.0 | Added in: 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 つの部分に分割するには、次のようにします。
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 が crypto サポート (デフォルト) でビルドされている必要があります。
--tls-keylog=file
Added in: v13.2.0, v12.16.0
TLS鍵マテリアルをファイルに記録します。キーマテリアルはNSS SSLKEYLOGFILE
形式で、(Wiresharkなどの) TLSトラフィックを復号化するためにソフトウェアで使用できます。
--tls-max-v1.2
Added in: v12.0.0, v10.20.0
tls.DEFAULT_MAX_VERSION
を 'TLSv1.2' に設定します。TLSv1.3 のサポートを無効にするために使用します。
--tls-max-v1.3
Added in: v12.0.0
デフォルトの tls.DEFAULT_MAX_VERSION
を 'TLSv1.3' に設定します。TLSv1.3 のサポートを有効にするために使用します。
--tls-min-v1.0
Added in: v12.0.0, v10.20.0
デフォルトの tls.DEFAULT_MIN_VERSION
を 'TLSv1' に設定します。古い TLS クライアントまたはサーバーとの互換性のために使用します。
--tls-min-v1.1
Added in: v12.0.0, v10.20.0
デフォルトの tls.DEFAULT_MIN_VERSION
を 'TLSv1.1' に設定します。古い TLS クライアントまたはサーバーとの互換性のために使用します。
--tls-min-v1.2
Added in: v12.2.0, v10.20.0
デフォルトの tls.DEFAULT_MIN_VERSION
を 'TLSv1.2' に設定します。これは 12.x 以降のデフォルトですが、このオプションは古い Node.js バージョンとの互換性のためにサポートされています。
--tls-min-v1.3
Added in: v12.0.0
デフォルトの tls.DEFAULT_MIN_VERSION
を 'TLSv1.3' に設定します。TLSv1.2 のサポートを無効にするために使用します。TLSv1.2 は TLSv1.3 ほど安全ではありません。
--trace-deprecation
Added in: v0.8.0
非推奨のスタックトレースを表示します。
--trace-env
Added in: v23.4.0
現在の Node.js インスタンスで実行された環境変数へのアクセスに関する情報を stderr に出力します。
- Node.js が内部的に行う環境変数の読み取り。
process.env.KEY = "SOME VALUE"
形式の書き込み。process.env.KEY
形式の読み取り。Object.defineProperty(process.env, 'KEY', {...})
形式の定義。Object.hasOwn(process.env, 'KEY')
、process.env.hasOwnProperty('KEY')
、または'KEY' in process.env
形式のクエリ。delete process.env.KEY
形式の削除。...process.env
またはObject.keys(process.env)
形式の列挙。
アクセスされている環境変数の名前のみが出力されます。値は出力されません。
アクセス時のスタックトレースを出力するには、--trace-env-js-stack
または --trace-env-native-stack
を使用してください。
--trace-env-js-stack
追加: v23.4.0
--trace-env
の機能に加え、アクセス時の JavaScript スタックトレースを出力します。
--trace-env-native-stack
追加: v23.4.0
--trace-env
の機能に加え、アクセス時のネイティブスタックトレースを出力します。
--trace-event-categories
追加: v7.7.0
--trace-events-enabled
を使用してトレースイベントトレースが有効になっている場合にトレースされるべきカテゴリのカンマ区切りリスト。
--trace-event-file-pattern
追加: v9.8.0
トレースイベントデータのファイルパスを指定するテンプレート文字列。${rotation}
と ${pid}
をサポートします。
--trace-events-enabled
追加: v7.7.0
トレースイベントトレース情報の収集を有効にします。
--trace-exit
追加: v13.5.0, v12.16.0
環境が積極的に終了するたびに、つまり process.exit()
を呼び出すたびに、スタックトレースを出力します。
--trace-require-module=mode
追加: v23.5.0
require()
を使用した ECMAScript モジュールのロード の使用状況に関する情報を出力します。
mode
が all
の場合、すべての使用状況が出力されます。 mode
が no-node-modules
の場合、node_modules
フォルダからの使用状況は除外されます。
--trace-sigint
追加: v13.9.0, v12.17.0
SIGINT でスタックトレースを出力します。
--trace-sync-io
追加: v2.1.0
イベントループの最初のターン後に同期 I/O が検出されるたびにスタックトレースを出力します。
--trace-tls
追加: v12.2.0
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
Added in: v13.6.0, v12.17.0
Node.jsの静的コードを起動時に大きなメモリページに再マップします。ターゲットシステムでサポートされている場合、これにより、Node.jsの静的コードが4 KiBページではなく2 MiBページに移動されます。
mode
に有効な値は次のとおりです。
off
: マッピングは試行されません。これがデフォルトです。on
: OSでサポートされている場合、マッピングが試行されます。マッピングに失敗しても無視され、メッセージが標準エラーに出力されます。silent
: OSでサポートされている場合、マッピングが試行されます。マッピングに失敗しても無視され、報告されません。
--v8-options
Added in: v0.1.3
V8のコマンドラインオプションを出力します。
--v8-pool-size=num
Added in: v5.10.0
バックグラウンドジョブの割り当てに使用されるV8のスレッドプールサイズを設定します。
0
に設定すると、Node.jsは並列処理の推定量に基づいて、スレッドプールの適切なサイズを選択します。
並列処理の量は、特定のマシンで同時に実行できる計算の数です。一般的に、CPUの数と同じですが、VMやコンテナなどの環境では異なる場合があります。
-v
, --version
Added in: v0.1.3
Nodeのバージョンを出力します。
--watch
[履歴]
バージョン | 変更 |
---|---|
v22.0.0, v20.13.0 | ウォッチモードが安定しました。 |
v19.2.0, v18.13.0 | テストランナーがウォッチモードでの実行をサポートするようになりました。 |
v18.11.0, v16.19.0 | Added in: v18.11.0, v16.19.0 |
Node.jsをウォッチモードで起動します。ウォッチモードでは、監視対象ファイルの変更により、Node.jsプロセスが再起動されます。デフォルトでは、ウォッチモードはエントリポイントと、requireまたはimportされたモジュールを監視します。監視するパスを指定するには、--watch-path
を使用します。
このフラグは、--check
、--eval
、--interactive
、またはREPLと組み合わせて使用することはできません。
node --watch index.js
--watch-path
[History]
Version | Changes |
---|---|
v22.0.0, v20.13.0 | ウォッチモードが安定版になりました。 |
v18.11.0, v16.19.0 | 追加: v18.11.0, v16.19.0 |
Node.js をウォッチモードで起動し、監視するパスを指定します。 ウォッチモードでは、監視対象パスの変更により Node.js プロセスが再起動されます。 これは、--watch
と組み合わせて使用した場合でも、require または import されたモジュールの監視をオフにします。
このフラグは、--check
、--eval
、--interactive
、--test
、または REPL と組み合わせて使用することはできません。
node --watch-path=./src --watch-path=./tests index.js
このオプションは、macOS および Windows でのみサポートされています。 オプションがサポートされていないプラットフォームで使用すると、ERR_FEATURE_UNAVAILABLE_ON_PLATFORM
例外がスローされます。
--watch-preserve-output
追加: v19.3.0, v18.13.0
ウォッチモードがプロセスを再起動するときに、コンソールのクリアを無効にします。
node --watch --watch-preserve-output test.js
--zero-fill-buffers
追加: v6.0.0
新しく割り当てられたすべての Buffer
および SlowBuffer
インスタンスを自動的にゼロで埋めます。
環境変数
FORCE_COLOR=[1, 2, 3]
FORCE_COLOR
環境変数は、ANSI カラー出力の有効化に使用されます。 値は次のいずれかです。
1
、true
、または空の文字列''
は 16 色のサポートを示します。2
は 256 色のサポートを示します。3
は 1600 万色のサポートを示します。
FORCE_COLOR
が使用され、サポートされている値に設定されている場合、NO_COLOR
および NODE_DISABLE_COLORS
環境変数は無視されます。
他の値を使用すると、カラー出力は無効になります。
NODE_COMPILE_CACHE=dir
追加: v22.1.0
Node.js インスタンスのモジュールコンパイルキャッシュを有効にします。 詳細については、モジュールコンパイルキャッシュのドキュメントを参照してください。
NODE_DEBUG=module[,…]
追加: v0.1.32
デバッグ情報を出力するコアモジュールを ','
で区切ったリスト。
NODE_DEBUG_NATIVE=module[,…]
デバッグ情報を出力するコア C++ モジュールを ','
で区切ったリスト。
NODE_DISABLE_COLORS=1
追加: v0.3.0
設定すると、REPL で色が使用されなくなります。
NODE_DISABLE_COMPILE_CACHE=1
追加: v22.8.0
Node.js インスタンスのモジュールコンパイルキャッシュを無効にします。詳細については、モジュールコンパイルキャッシュのドキュメントを参照してください。
NODE_EXTRA_CA_CERTS=file
追加: v7.3.0
設定すると、既知の "ルート" CA (VeriSign など) が file
内の追加の証明書で拡張されます。ファイルは、PEM 形式の 1 つ以上の信頼できる証明書で構成されている必要があります。ファイルが見つからないか、形式が正しくない場合、process.emitWarning()
でメッセージが (一度) 発行されますが、それ以外のエラーは無視されます。
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 はエラーで終了します。
オプションの値にスペースが含まれている場合は、二重引用符を使用してエスケープできます。
NODE_OPTIONS='--require "./my path/file.js"'
コマンドラインオプションとして渡されたシングルトンフラグは、NODE_OPTIONS
に渡された同じフラグをオーバーライドします。
# インスペクターはポート 5555 で利用可能になります {#node_options=options}
NODE_OPTIONS='--inspect=localhost:4444' node --inspect=localhost:5555
複数回渡すことができるフラグは、NODE_OPTIONS
のインスタンスが最初に渡され、次にコマンドラインインスタンスが渡されたかのように扱われます。
NODE_OPTIONS='--require "./a.js"' node --require "./b.js"
# は以下と同等です: {#the-inspector-will-be-available-on-port-5555}
node --require "./a.js" --require "./b.js"
許可されている Node.js オプションは、次のリストにあります。オプションが --XX
と --no-XX
の両方のバリアントをサポートしている場合、両方がサポートされますが、以下のリストには 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_COLOR
は NODE_DISABLE_COLORS
のエイリアスです。環境変数の値は任意です。
カバレッジ出力 {#no_color=<any>}
カバレッジは、最上位のキー result
の ScriptCoverage オブジェクトの配列として出力されます。
{
"result": [
{
"scriptId": "67",
"url": "internal/tty.js",
"functions": []
}
]
}
ソースマップキャッシュ
ソースマップデータが見つかった場合、JSON カバレッジオブジェクトの最上位キー source-map-cache
に追加されます。
source-map-cache
は、ソースマップが抽出されたファイルを表すキーを持つオブジェクトであり、値には、生のソースマップ URL(キー url
内)、解析されたソースマップ v3 情報(キー data
内)、およびソースファイルの行の長さ(キー lineLengths
内)が含まれます。
{
"result": [
{
"scriptId": "68",
"url": "file:///absolute/path/to/source.js",
"functions": []
}
],
"source-map-cache": {
"file:///absolute/path/to/source.js": {
"url": "./path-to-map.json",
"data": {
"version": 3,
"sources": [
"file:///absolute/path/to/original.js"
],
"names": [
"Foo",
"console",
"info"
],
"mappings": "MAAMA,IACJC,YAAaC",
"sourceRoot": "./"
},
"lineLengths": [
13,
62,
38,
27
]
}
}
}
OPENSSL_CONF=file
Added in: v6.11.0
起動時にOpenSSL設定ファイルを読み込みます。特に、Node.jsが./configure --openssl-fips
でビルドされている場合、FIPS準拠の暗号化を有効にするために使用できます。
--openssl-config
コマンドラインオプションが使用されている場合、この環境変数は無視されます。
SSL_CERT_DIR=dir
Added in: v7.7.0
--use-openssl-ca
が有効になっている場合、信頼された証明書を含むOpenSSLのディレクトリを上書きして設定します。
子環境が明示的に設定されていない限り、この環境変数はすべての子プロセスに継承され、それらがOpenSSLを使用する場合、Node.jsと同じCAを信頼する可能性があることに注意してください。
SSL_CERT_FILE=file
Added in: v7.7.0
--use-openssl-ca
が有効になっている場合、信頼された証明書を含むOpenSSLのファイルを上書きして設定します。
子環境が明示的に設定されていない限り、この環境変数はすべての子プロセスに継承され、それらがOpenSSLを使用する場合、Node.jsと同じCAを信頼する可能性があることに注意してください。
TZ
[History]
Version | Changes |
---|---|
v16.2.0 | process.env.TZ = を使用してTZ変数を変更すると、Windowsでもタイムゾーンが変更されます。 |
v13.0.0 | process.env.TZ = を使用してTZ変数を変更すると、POSIXシステムでタイムゾーンが変更されます。 |
v0.0.1 | Added in: v0.0.1 |
TZ
環境変数は、タイムゾーン構成を指定するために使用されます。
Node.jsは、他の環境でTZ
が処理されるさまざまな方法のすべてをサポートしているわけではありませんが、基本的なタイムゾーンID('Etc/UTC'
、'Europe/Paris'
、'America/New_York'
など)をサポートしています。 他のいくつかの省略形またはエイリアスをサポートする場合がありますが、これらは強く推奨されず、保証もされていません。
$ TZ=Europe/Dublin node -pe "new Date().toString()"
Wed May 12 2021 20:30:48 GMT+0100 (Irish Standard Time)
UV_THREADPOOL_SIZE=size
libuv のスレッドプールで使用されるスレッド数を size
スレッドに設定します。
Node.js では可能な限り非同期システム API が使用されますが、存在しない場合は、libuv のスレッドプールを使用して、同期システム API に基づいた非同期ノード API が作成されます。スレッドプールを使用する Node.js API は次のとおりです。
- ファイルウォッチャー API と明示的に同期的なものを除く、すべての
fs
API crypto.pbkdf2()
、crypto.scrypt()
、crypto.randomBytes()
、crypto.randomFill()
、crypto.generateKeyPair()
などの非同期 crypto APIdns.lookup()
- 明示的に同期的なものを除く、すべての
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は未使用メモリを解放するためにガベージコレクションにより多くの時間を費やします。
2 GiBのメモリを搭載したマシンでは、他の用途のためにメモリを残し、スワップを避けるために、これを1536(1.5 GiB)に設定することを検討してください。
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ビットシステムのベンチマーク:
for MiB in 16 32 64 128; do
node --max-semi-space-size=$MiB index.js
done
--perf-basic-prof
--perf-basic-prof-only-functions
--perf-prof
--perf-prof-unwinding-info
--prof
--security-revert
--stack-trace-limit=limit
エラーのスタックトレースに収集するスタックフレームの最大数。0 に設定すると、スタックトレースの収集が無効になります。デフォルト値は 10 です。
node --stack-trace-limit=12 -p -e "Error.stackTraceLimit" # 12 を出力