コマンドライン 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 オプションの終わりを示します。残りの引数をスクリプトに渡します。スクリプトファイル名または eval/print スクリプトがこれより前に指定されていない場合、次の引数がスクリプトファイル名として使用されます。
--abort-on-uncaught-exception
追加: v0.10.8
終了する代わりにアボートすると、デバッガー (lldb
、gdb
、mdb
など) を使用した事後分析用にコアファイルが生成されます。
このフラグが渡された場合でも、process.setUncaughtExceptionCaptureCallback()
(およびそれを使用する node:domain
モジュールの使用)を通じて、アボートしないように動作を設定することができます。
--allow-addons
追加: v21.6.0, v20.12.0
パーミッションモデルを使用する場合、プロセスはデフォルトでネイティブアドオンを使用できません。ユーザーが Node.js の起動時に --allow-addons
フラグを明示的に渡さない限り、そうしようとすると ERR_DLOPEN_DISABLED
がスローされます。
例:
// ネイティブアドオンを 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
追加: v20.0.0
パーミッションモデルを使用している場合、プロセスはデフォルトでは子プロセスを生成できません。ユーザーが 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
[履歴]
バージョン | 変更点 |
---|---|
v23.5.0 | パーミッションモデルと--allow-fs フラグが安定版になりました。 |
v20.7.0 | カンマ(, )で区切られたパスは許可されなくなりました。 |
v20.0.0 | 追加: v20.0.0 |
このフラグは、パーミッションモデルを使用してファイルシステム読み取りパーミッションを設定します。
--allow-fs-read
フラグの有効な引数は次のとおりです。
*
- すべてのFileSystemRead
操作を許可します。- 複数のパスを許可するには、複数の
--allow-fs-read
フラグを使用できます。例:--allow-fs-read=/folder1/ --allow-fs-read=/folder1/
例は、ファイルシステムのパーミッションドキュメントにあります。
イニシャライザーモジュールも許可する必要があります。次の例を考えてください。
$ node --permission index.js
Error: Access to this API has been restricted
at node:internal/main/run_main_module:23:47 {
code: 'ERR_ACCESS_DENIED',
permission: 'FileSystemRead',
resource: '/Users/rafaelgss/repos/os/node/index.js'
}
プロセスはindex.js
モジュールへのアクセス権が必要です。
node --permission --allow-fs-read=/path/to/index.js index.js
--allow-fs-write
[履歴]
バージョン | 変更点 |
---|---|
v23.5.0 | Permission Model と --allow-fs フラグが安定版になりました。 |
v20.7.0 | カンマ(, )で区切られたパスは許可されなくなりました。 |
v20.0.0 | 追加:v20.0.0 |
このフラグは、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
Permission Model を使用する場合、プロセスはデフォルトで 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
エラー: この API へのアクセスは制限されています
at node:internal/main/run_main_module:30:49 {
code: 'ERR_ACCESS_DENIED',
permission: 'WASI',
}
--allow-worker
追加:v20.0.0
Permission Model を使用する場合、プロセスはデフォルトでワーカー スレッドを作成できません。セキュリティ上の理由から、ユーザーがメインの Node.js プロセスで明示的に --allow-worker
フラグを渡さない限り、呼び出しは ERR_ACCESS_DENIED
をスローします。
例:
const { Worker } = require('node:worker_threads')
// 権限をバイパスしようとする
new Worker(__filename)
$ 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
プロセスが終了するときにスナップショット blob を生成し、ディスクに書き込みます。これは後で --snapshot-blob
でロードできます。
スナップショットをビルドするときに、--snapshot-blob
が指定されていない場合、生成された blob はデフォルトで現在の作業ディレクトリの snapshot.blob
に書き込まれます。それ以外の場合は、--snapshot-blob
で指定されたパスに書き込まれます。
$ 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 は、スナップショットのビルド時にエントリポイントを指定するために使用でき、これにより、逆シリアル化時に追加のエントリスクリプトを必要としなくなります。
$ 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
スナップショット作成の動作を構成する JSON 構成ファイルへのパスを指定します。
現在、次のオプションがサポートされています。
builder
<string> 必須。--build-snapshot
がbuilder
をメインスクリプト名として渡されたかのように、スナップショットをビルドする前に実行されるスクリプトの名前を提供します。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 補完スクリプトを出力します。
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 |
カスタムの条件付きエクスポート解決条件を提供します。
任意の数のカスタム文字列条件名が許可されます。
デフォルトの Node.js 条件 "node"
、"default"
、"import"
、および "require"
は常に定義されたとおりに適用されます。
たとえば、「開発」の解決でモジュールを実行するには:
node -C development app.js
--cpu-prof
[履歴]
バージョン | 変更点 |
---|---|
v22.4.0, v20.16.0 | --cpu-prof フラグが安定版になりました。 |
v12.0.0 | 追加: 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 | 追加: 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')
たとえば、次のスクリプトは、node --disable-warning=ExperimentalWarning
で実行された場合、DEP0025 require('node:sys')
を出力しますが、(<=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
追加: 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
の結果を呼び出して返します。
const originalPrepareStackTrace = Error.prepareStackTrace
Error.prepareStackTrace = (error, trace) => {
// エラーとトレースを変更し、
// 元のError.prepareStackTraceでスタックトレースをフォーマットします。
return originalPrepareStackTrace(error, trace)
}
ソースマップを有効にすると、Error.stack
にアクセスするときにアプリケーションにレイテンシが発生する可能性があることに注意してください。アプリケーションでError.stack
に頻繁にアクセスする場合は、--enable-source-maps
のパフォーマンスへの影響を考慮してください。
--entry-url
追加: v23.0.0
存在する場合、Node.js はエントリポイントをパスではなく URL として解釈します。
ECMAScript モジュールの解決ルールに従います。
URL 内のクエリパラメータまたはハッシュは、import.meta.url
を介してアクセスできます。
node --entry-url 'file:///path/to/file.js?queryparams=work#and-hashes-too'
node --entry-url --experimental-strip-types 'file.ts?query#hash'
node --entry-url 'data:text/javascript,console.log("Hello")'
--env-file-if-exists=config
追加バージョン: v22.9.0
挙動は--env-file
と同じですが、ファイルが存在しない場合にエラーはスローされません。
--env-file=config
[履歴]
バージョン | 変更点 |
---|---|
v21.7.0, v20.12.0 | 複数行の値のサポートを追加。 |
v20.6.0 | 追加バージョン: v20.6.0 |
カレントディレクトリからの相対パスで指定されたファイルから環境変数をロードし、process.env
でアプリケーションで利用できるようにします。 NODE_OPTIONS
のようなNode.js を構成する環境変数はパースされ、適用されます。同じ変数が環境とファイルの両方で定義されている場合、環境からの値が優先されます。
複数の--env-file
引数を渡すことができます。後続のファイルは、以前のファイルで定義された既存の変数を上書きします。
ファイルが存在しない場合、エラーがスローされます。
node --env-file=.env --env-file=.development.env index.js
ファイルの形式は、環境変数名と値のキーと値のペアを=
で区切って 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}
[History]
Version | Changes |
---|---|
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
[履歴]
Version | Changes |
---|---|
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.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 バイナリに注入して単一実行可能アプリケーションを生成できるブロブを生成します。詳細については、この構成に関するドキュメントを参照してください。
--experimental-shadow-realm
追加: v19.0.0, v18.13.0
このフラグを使用して、ShadowRealmのサポートを有効にします。
--experimental-strip-types
追加: v22.6.0
TypeScript ファイルの実験的な型削除を有効にします。詳細については、TypeScript の型削除のドキュメントを参照してください。
--experimental-test-coverage
[履歴]
バージョン | 変更点 |
---|---|
v20.1.0, v18.17.0 | このオプションは --test と共に使用できます。 |
v19.7.0, v18.15.0 | 追加: v19.7.0, v18.15.0 |
node:test
モジュールと組み合わせて使用すると、テストランナーの出力の一部としてコードカバレッジレポートが生成されます。テストが実行されない場合、カバレッジレポートは生成されません。詳細については、テストからのコードカバレッジの収集に関するドキュメントを参照してください。
--experimental-test-isolation=mode
追加: v22.8.0
テストランナーで使用するテスト分離のタイプを構成します。mode
が 'process'
の場合、各テストファイルは個別の子プロセスで実行されます。mode
が 'none'
の場合、すべてのテストファイルはテストランナーと同じプロセスで実行されます。デフォルトの分離モードは 'process'
です。このフラグは --test
フラグが存在しない場合は無視されます。詳細については、テストランナーの実行モデルセクションを参照してください。
--experimental-test-module-mocks
追加: v22.3.0, v20.18.0
テストランナーでモックモジュールを有効にします。
--experimental-transform-types
追加: v22.7.0
[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.0 | WASI がデフォルトで有効になったため、このオプションは不要になりましたが、引き続き渡すことができます。 |
v13.6.0 | --experimental-wasi-unstable-preview0 から --experimental-wasi-unstable-preview1 に変更されました。 |
v13.3.0, v12.16.0 | 追加: v13.3.0, v12.16.0 |
実験的な WebAssembly 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 拡張機能を公開します。
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
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
より大きい場合は、少なくとも 1 つ、最大で max_count
個のスナップショットを Node.js インスタンスがメモリ不足になる前に生成するように最善を尽くします。
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
は 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: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]
追加: v22.2.0, v20.15.0
host:port
でインスペクターをアクティブにし、デバッガーが接続されるのを待ちます。デフォルトの host:port
は 127.0.0.1:9229
です。ポート 0
が指定された場合、利用可能なランダムなポートが使用されます。
Node.js デバッガーの詳細については、Node.js の V8 インスペクター統合 を参照してください。
--inspect[=[host:]port]
追加: v6.3.0
host:port
でインスペクターをアクティブにします。デフォルトは 127.0.0.1:9229
です。ポート 0
が指定された場合、利用可能なランダムなポートが使用されます。
V8 インスペクター統合により、Chrome DevTools や IDE などのツールが Node.js インスタンスをデバッグおよびプロファイルできます。ツールは TCP ポートを介して Node.js インスタンスに接続し、Chrome DevTools Protocol を使用して通信します。Node.js デバッガーの詳細については、Node.js の V8 インスペクター統合 を参照してください。
-i
, --interactive
追加: v0.7.7
stdin がターミナルでない場合でも REPL を開きます。
--jitless
追加: v12.0.0
実行可能メモリのランタイム割り当てを無効にします。これは、セキュリティ上の理由から一部のプラットフォームで必要になる場合があります。また、他のプラットフォームでの攻撃対象領域を減らすこともできますが、パフォーマンスへの影響が大きくなる可能性があります。
--localstorage-file=file
追加: v22.4.0
localStorage
データを保存するために使用されるファイル。ファイルが存在しない場合は、最初に localStorage
にアクセスしたときに作成されます。同じファイルを複数の Node.js プロセス間で同時に共有できます。このフラグは、Node.js が --experimental-webstorage
フラグ付きで起動されない限り、何もしません。
--max-http-header-size=size
[履歴]
バージョン | 変更点 |
---|---|
v13.13.0 | HTTP ヘッダーの最大デフォルトサイズを 8KiB から 16KiB に変更。 |
v11.6.0, v10.15.0 | 追加: v11.6.0, v10.15.0 |
HTTP ヘッダーの最大サイズをバイト単位で指定します。デフォルトは 16KiB です。
--napi-modules
追加: v7.10.0
このオプションは何もしません。互換性のために残されています。
--network-family-autoselection-attempt-timeout
追加: v22.1.0, v20.13.0
ネットワークファミリの自動選択試行タイムアウトのデフォルト値を設定します。詳細については、net.getDefaultAutoSelectFamilyAttemptTimeout()
を参照してください。
--no-addons
追加: v16.10.0, v14.19.0
node-addons
エクスポート条件を無効にし、ネイティブアドオンのロードも無効にします。--no-addons
が指定されている場合、process.dlopen
を呼び出したり、ネイティブ C++アドオンを必要とすると失敗し、例外をスローします。
--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 | Permission Model が安定しました。 |
v20.0.0 | 追加: v20.0.0 |
現在のプロセスに対して Permission Model を有効にします。有効にすると、次のアクセス許可が制限されます。
- ファイルシステム -
--allow-fs-read
、--allow-fs-write
フラグで管理可能 - 子プロセス -
--allow-child-process
フラグで管理可能 - Worker Threads -
--allow-worker
フラグで管理可能 - WASI -
--allow-wasi
フラグで管理可能 - Addons -
--allow-addons
フラグで管理可能
--preserve-symlinks
追加: v6.3.0
モジュールを解決およびキャッシュするときに、モジュールローダーにシンボリックリンクを保持するように指示します。
デフォルトでは、Node.js は、ディスク上の別の場所にシンボリックリンクされているパスからモジュールをロードするとき、リンクを解決し、モジュールの実際のディスク上の「実パス」を、識別子および他の依存モジュールを検索するためのルートパスとして使用します。ほとんどの場合、このデフォルトの動作は許容できます。ただし、以下の例に示すように、シンボリックリンクされたピア依存関係を使用する場合、moduleA
が moduleB
をピア依存関係として要求しようとすると、デフォルトの動作によって例外がスローされます。
{appDir}
├── app
│ ├── index.js
│ └── node_modules
│ ├── moduleA -> {appDir}/moduleA
│ └── moduleB
│ ├── index.js
│ └── package.json
└── moduleA
├── index.js
└── package.json
--preserve-symlinks
コマンドラインフラグは、Node.js に、実パスではなくモジュールのシンボリックリンクパスを使用するように指示します。これにより、シンボリックリンクされたピア依存関係を見つけることができます。
ただし、--preserve-symlinks
を使用すると、他の副作用が生じる可能性があることに注意してください。特に、シンボリックリンクされた ネイティブ モジュールは、依存関係ツリー内の複数の場所からリンクされている場合、ロードに失敗する可能性があります(Node.js はそれらを 2 つの個別のモジュールとみなし、モジュールを複数回ロードしようとして、例外がスローされます)。
--preserve-symlinks
フラグはメインモジュールには適用されません。これにより、node --preserve-symlinks node_module/.bin/\<foo\>
が機能します。メインモジュールにも同じ動作を適用するには、--preserve-symlinks-main
も使用してください。
--preserve-symlinks-main
追加: v10.2.0
メインモジュール(require.main
)を解決およびキャッシュする際に、シンボリックリンクを保持するようにモジュールローダーに指示します。
このフラグは、メインモジュールが--preserve-symlinks
が他のすべてのインポートに与えるのと同じ動作にオプトインできるようにするために存在します。ただし、古い Node.js バージョンとの後方互換性のために、これらは別のフラグです。
--preserve-symlinks-main
は--preserve-symlinks
を意味しません。相対パスを解決する前にシンボリックリンクをたどることが望ましくない場合は、--preserve-symlinks
に加えて--preserve-symlinks-main
を使用してください。
詳細については、--preserve-symlinks
を参照してください。
-p
, --print "script"
[履歴]
バージョン | 変更点 |
---|---|
v5.11.0 | ビルトインライブラリが事前定義された変数として利用可能になりました。 |
v0.6.4 | 追加: v0.6.4 |
-e
と同じですが、結果を出力します。
--prof
追加: v2.0.0
V8 プロファイラー出力を生成します。
--prof-process
追加: v5.2.0
V8 オプション--prof
を使用して生成された V8 プロファイラー出力を処理します。
--redirect-warnings=file
追加: v8.0.0
プロセス警告を stderr に出力する代わりに、指定されたファイルに書き込みます。ファイルが存在しない場合は作成され、存在する場合は追加されます。ファイルを書き込もうとしてエラーが発生した場合、警告は代わりに stderr に書き込まれます。
file
の名前は絶対パスでも構いません。そうでない場合、書き込まれるデフォルトのディレクトリは、--diagnostic-dir
コマンドラインオプションによって制御されます。
--report-compact
追加: v13.12.0, v12.17.0
レポートをコンパクトな形式、つまり 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.0 | v11.8.0 で追加されました。 |
未処理の例外が原因でプロセスが終了したときにレポートを生成できるようにします。ネイティブスタックやその他のランタイム環境データと組み合わせて JavaScript スタックを検査するのに役立ちます。
-r
, --require module
追加: v1.6.0
起動時に指定されたモジュールをプリロードします。
require()
のモジュール解決規則に従います。module
はファイルへのパス、または node モジュール名です。
CommonJS モジュールのみがサポートされています。--import
を使用してECMAScript モジュールをプリロードします。--require
でプリロードされたモジュールは、--import
でプリロードされたモジュールの前に実行されます。
モジュールは、メインスレッドだけでなく、すべてのワーカースレッド、フォークされたプロセス、またはクラスタ化されたプロセスにプリロードされます。
--run
[履歴]
バージョン | 変更点 |
---|---|
v22.3.0 | NODE_RUN_SCRIPT_NAME 環境変数が追加されました。 |
v22.3.0 | NODE_RUN_PACKAGE_JSON_PATH 環境変数が追加されました。 |
v22.3.0 | ルートディレクトリまで遡り、コマンドを実行する package.json ファイルを見つけ、それに応じて PATH 環境変数を更新します。 |
v22.0.0 | v22.0.0 で追加されました。 |
これは、package.json の "scripts"
オブジェクトから指定されたコマンドを実行します。 "command"
が欠落している場合は、使用可能なスクリプトを一覧表示します。
--run
はルートディレクトリまで遡り、コマンドを実行する package.json
ファイルを見つけます。
--run
は、複数の node_modules
ディレクトリが存在する異なるフォルダーからバイナリを実行するために、現在のディレクトリの各祖先の ./node_modules/.bin
を PATH
に先頭に追加します。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
追加: v22.5.0
絶対パスと相対パスの両方に一致するグロブパターンを使用して、コードカバレッジに特定のファイルを含めます。
このオプションは、複数のグロブパターンを含めるために複数回指定できます。
--test-coverage-exclude
と --test-coverage-include
の両方が指定された場合、ファイルはカバレッジレポートに含めるために両方の条件を満たす必要があります。
--test-coverage-lines=threshold
追加: v22.8.0
カバーされた行の最小パーセントを要求します。コードカバレッジが指定されたしきい値に達しない場合、プロセスはコード 1
で終了します。
--test-force-exit
追加: v22.0.0, v20.14.0
イベントループがアクティブなままである場合でも、既知のすべてのテストの実行が完了したら、プロセスを終了するようにテストランナーを構成します。
--test-name-pattern
[履歴]
バージョン | 変更点 |
---|---|
v20.0.0 | テストランナーが安定版になりました。 |
v18.11.0 | 追加: v18.11.0 |
指定されたパターンに名前が一致するテストのみを実行するようにテストランナーを構成する正規表現。詳細については、名前によるテストのフィルタリングに関するドキュメントを参照してください。
--test-name-pattern
と --test-skip-pattern
の両方が指定されている場合、テストは実行されるために両方の要件を満たす必要があります。
--test-only
[履歴]
バージョン | 変更点 |
---|---|
v20.0.0 | テストランナーが安定版になりました。 |
v18.0.0, v16.17.0 | 追加: v18.0.0, v16.17.0 |
only
オプションが設定されているトップレベルのテストのみを実行するようにテストランナーを構成します。テストの分離が無効になっている場合、このフラグは必要ありません。
--test-reporter
[履歴]
バージョン | 変更点 |
---|---|
v20.0.0 | テストランナーが安定版になりました。 |
v19.6.0, v18.15.0 | 追加: v19.6.0, v18.15.0 |
テストの実行時に使用するテストレポーター。詳細については、テストレポーターに関するドキュメントを参照してください。
--test-reporter-destination
[履歴]
バージョン | 変更点 |
---|---|
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 が暗号化サポート(デフォルト)でビルドされている必要があります。
--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 モジュールの読み込み の使用に関する情報を出力します。
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
追加: 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 |
Node.js をウォッチモードで起動します。ウォッチモードでは、監視対象ファイルの変更により Node.js プロセスが再起動します。デフォルトでは、ウォッチモードはエントリポイントと、required または imported されたモジュールを監視します。監視するパスを指定するには、--watch-path
を使用します。
このフラグは、--check
、--eval
、--interactive
、または REPL と組み合わせることはできません。
node --watch index.js
--watch-path
[履歴]
バージョン | 変更点 |
---|---|
v22.0.0, v20.13.0 | ウォッチモードが安定版になりました。 |
v18.11.0, v16.19.0 | 追加: v18.11.0, v16.19.0 |
Node.js をウォッチモードで起動し、監視するパスを指定します。ウォッチモードでは、監視対象パスの変更によって Node.js プロセスが再起動されます。これにより、--watch
と組み合わせて使用した場合でも、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()
でメッセージが (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 はエラーで終了します。
オプションの値にスペースが含まれる場合は、二重引用符を使用してエスケープできます。
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
追加: 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.0 | process.env.TZ = を使用して TZ 変数を変更すると、Windows でもタイムゾーンが変更されます。 |
v13.0.0 | process.env.TZ = を使用して TZ 変数を変更すると、POSIX システムでタイムゾーンが変更されます。 |
v0.0.1 | 追加: v0.0.1 |
TZ
環境変数は、タイムゾーン構成を指定するために使用されます。
Node.js は、他の環境でTZ
が処理されるさまざまな方法のすべてをサポートしているわけではありませんが、基本的なタイムゾーン ID('Etc/UTC'
、'Europe/Paris'
、'America/New_York'
など)をサポートしています。他のいくつかの略語またはエイリアスをサポートする場合がありますが、これらは強く推奨されず、保証されていません。
$ TZ=Europe/Dublin node -pe "new Date().toString()"
Wed May 12 2021 20:30:48 GMT+0100 (Irish Standard Time)
UV_THREADPOOL_SIZE=size
libuv のスレッドプールで使用するスレッド数をsize
スレッドに設定します。
非同期システム API は、可能な限り Node.js で使用されますが、存在しない場合、libuv のスレッドプールを使用して、同期システム API に基づいた非同期 Node API が作成されます。スレッドプールを使用する Node.js API は次のとおりです。
- ファイルウォッチャー API と明示的に同期する API 以外のすべての
fs
API crypto.pbkdf2()
、crypto.scrypt()
、crypto.randomBytes()
、crypto.randomFill()
、crypto.generateKeyPair()
などの非同期暗号 APIdns.lookup()
- 明示的に同期する API 以外のすべての
zlib
API
libuv のスレッドプールは固定サイズであるため、これらの API のいずれかが何らかの理由で時間がかかる場合、libuv のスレッドプールで実行される他の(一見無関係な)API のパフォーマンスが低下します。この問題を軽減するための潜在的な解決策の 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)に設定することを検討してください。
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を出力