Node.js v21.7.2 ドキュメント
- Node.js v21.7.2
-
► 目次
- コマンドライン API
- 概要
- プログラムのエントリーポイント
- オプション
-
--
--abort-on-uncaught-exception
--allow-addons
--allow-child-process
--allow-fs-read
--allow-fs-write
--allow-worker
--build-snapshot
--build-snapshot-config
-c
、--check
--completion-bash
-C condition
、--conditions=condition
--cpu-prof
--cpu-prof-dir
--cpu-prof-interval
--cpu-prof-name
--diagnostic-dir=directory
--disable-warning=code-or-type
--disable-proto=mode
--disallow-code-generation-from-strings
--dns-result-order=order
--enable-fips
--enable-network-family-autoselection
--enable-source-maps
--env-file=config
-e
、--eval "script"
--experimental-default-type=type
--experimental-detect-module
--experimental-import-meta-resolve
--experimental-loader=module
--experimental-network-imports
--experimental-permission
--experimental-policy
--experimental-sea-config
--experimental-shadow-realm
--experimental-test-coverage
--experimental-vm-modules
--experimental-wasi-unstable-preview1
--experimental-wasm-modules
--experimental-websocket
--force-context-aware
--force-fips
--force-node-api-uncaught-exceptions-policy
--frozen-intrinsics
--heap-prof
--heap-prof-dir
--heap-prof-interval
--heap-prof-name
--heapsnapshot-near-heap-limit=max_count
--heapsnapshot-signal=signal
-h
、--help
--icu-data-dir=file
--import=module
--input-type=type
--insecure-http-parser
--inspect[=[host:]port]
--inspect-brk[=[host:]port]
--inspect-port=[host:]port
--inspect-publish-uid=stderr,http
-i
、--interactive
--jitless
--max-http-header-size=size
--napi-modules
--no-addons
--no-deprecation
--no-experimental-fetch
--no-experimental-global-customevent
--no-experimental-global-navigator
--no-experimental-global-webcrypto
--no-experimental-repl-await
--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=file
--openssl-legacy-provider
--openssl-shared-config
--pending-deprecation
--policy-integrity=sri
--preserve-symlinks
--preserve-symlinks-main
-p
、--print "script"
--prof
--prof-process
--redirect-warnings=file
--report-compact
--report-dir=directory
、report-directory=directory
--report-filename=filename
--report-on-fatalerror
--report-on-signal
--report-signal=signal
--report-uncaught-exception
-r
、--require module
--secure-heap=n
--secure-heap-min=n
--snapshot-blob=path
--test
--test-concurrency
--test-name-pattern
--test-only
--test-reporter
--test-reporter-destination
--test-shard
--test-timeout
--throw-deprecation
--title=title
--tls-cipher-list=list
--tls-keylog=file
--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-atomics-wait
--trace-deprecation
--trace-event-categories
--trace-event-file-pattern
--trace-events-enabled
--trace-exit
--trace-sigint
--trace-sync-io
--trace-tls
--trace-uncaught
--trace-warnings
--track-heap-objects
--unhandled-rejections=mode
--use-bundled-ca
、--use-openssl-ca
--use-largepages=mode
--v8-options
--v8-pool-size=num
-v
、--version
--watch
--watch-path
--watch-preserve-output
--zero-fill-buffers
- 環境変数
FORCE_COLOR=[1, 2, 3]
NO_COLOR=<任意>
NODE_DEBUG=module[,…]
NODE_DEBUG_NATIVE=module[,…]
NODE_DISABLE_COLORS=1
NODE_EXTRA_CA_CERTS=file
NODE_ICU_DATA=file
NODE_NO_WARNINGS=1
NODE_OPTIONS=options...
NODE_PATH=path[:…]
NODE_PENDING_DEPRECATION=1
NODE_PENDING_PIPE_INSTANCES=instances
NODE_PRESERVE_SYMLINKS=1
NODE_REDIRECT_WARNINGS=file
NODE_REPL_EXTERNAL_MODULE=file
NODE_REPL_HISTORY=file
NODE_SKIP_PLATFORM_CHECK=value
NODE_TEST_CONTEXT=value
NODE_TLS_REJECT_UNAUTHORIZED=value
NODE_V8_COVERAGE=dir
OPENSSL_CONF=file
SSL_CERT_DIR=dir
SSL_CERT_FILE=file
TZ
UV_THREADPOOL_SIZE=size
UV_USE_IO_URING=value
- 便利な V8 オプション
- コマンドライン API
-
► インデックス
- アサーションテスト
- 非同期コンテキスト追跡
- Async hooks
- Buffer
- C++ アドオン
- Node-API を使用した C/C++ アドオン
- C++ エンベッダー API
- 子プロセス
- Cluster
- コマンドラインオプション
- コンソール
- Corepack
- 暗号
- デバッガー
- 非推奨 API
- 診断チャンネル
- DNS
- ドメイン
- エラー
- イベント
- ファイルシステム
- グローバル
- HTTP
- HTTP/2
- HTTPS
- インスペクター
- 国際化
- モジュール: CommonJS モジュール
- モジュール: ECMAScript モジュール
- モジュール:
node:module
API - モジュール: パッケージ
- ネット
- OS
- パス
- パフォーマンスフック
- 権限
- プロセス
- Punycode
- クエリ文字列
- Readline
- REPL
- レポート
- 単一実行可能アプリケーション
- ストリーム
- 文字列デコーダー
- テストランナー
- タイマー
- TLS/SSL
- トレースイベント
- TTY
- UDP/データグラム
- URL
- ユーティリティ
- V8
- VM
- WASI
- Web Crypto API
- Web Streams API
- ワーカー スレッド
- Zlib
- ► その他のバージョン
- ► オプション
コマンドライン 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 モジュールローダーによって解決されるか、--experimental-default-type=module
が渡された場合は ES モジュールローダーによって解決されます。対応するファイルが見つからない場合、エラーがスローされます。
ファイルが見つかった場合、次のいずれかの条件で、そのパスは ES モジュールローダーに渡されます。
- プログラムは、
--import
や--experimental-default-type=module
など、エントリーポイントを ECMAScript モジュールローダーで強制的にロードするコマンドラインフラグで開始されました。 - ファイルには
.mjs
拡張子があります。 - ファイルに
.cjs
拡張子がなく、最も近い親のpackage.json
ファイルに、値が"module"
であるトップレベルの"type"
フィールドが含まれています。
それ以外の場合、ファイルは CommonJS モジュールローダーを使用してロードされます。詳細については、モジュールローダーを参照してください。
ECMAScript モジュールローダーのエントリーポイントの注意点#
ロード時、ES モジュールローダーはプログラムのエントリーポイントをロードし、node
コマンドは入力として .js
、.mjs
、または .cjs
拡張子を持つファイルのみを受け入れます。 --experimental-wasm-modules
が有効な場合は .wasm
拡張子を持つファイル、--experimental-default-type=module
が渡された場合は拡張子のないファイルを受け入れます。
オプション#
V8 オプションを含むすべてのオプションで、単語をダッシュ (-
) とアンダースコア (_
) の両方で区切ることができます。たとえば、--pending-deprecation
は --pending_deprecation
と同等です。
(--max-http-header-size
など)単一の値を取るオプションが複数回渡された場合、最後に渡された値が使用されます。コマンドラインからのオプションは、NODE_OPTIONS
環境変数を介して渡されるオプションよりも優先されます。
-
#
stdin のエイリアス。他のコマンドラインユーティリティでの -
の使用と同様に、stdin からスクリプトが読み取られ、残りのオプションがそのスクリプトに渡されることを意味します。
--
#
node オプションの終わりを示します。残りの引数をスクリプトに渡します。これよりも前にスクリプトのファイル名または eval/print スクリプトが指定されていない場合は、次の引数がスクリプトのファイル名として使用されます。
--abort-on-uncaught-exception
#
終了する代わりに中止すると、デバッガー (lldb
、gdb
、mdb
など) を使用した事後分析のためにコアファイルが生成されます。
このフラグが渡された場合でも、process.setUncaughtExceptionCaptureCallback()
(およびそれを使用する node:domain
モジュールの使用) を介して、中止しないように動作を設定できます。
--allow-addons
#
パーミッションモデルを使用する場合、プロセスはデフォルトでネイティブアドオンを使用できません。そうしようとすると、ユーザーが Node.js の起動時に明示的に --allow-addons
フラグを渡さない限り、ERR_DLOPEN_DISABLED
がスローされます。
例
// Attempt to require an native addon
require('nodejs-addon-example');
$ node --experimental-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
#
パーミッションモデルを使用する場合、プロセスはデフォルトで子プロセスを生成できません。ユーザーがNode.jsの起動時に--allow-child-process
フラグを明示的に渡さない限り、子プロセスを生成しようとするとERR_ACCESS_DENIED
がスローされます。
例
const childProcess = require('node:child_process');
// Attempt to bypass the permission
childProcess.spawn('node', ['-e', 'require("fs").writeFileSync("/new-file", "example")']);
$ node --experimental-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
#
このフラグは、パーミッションモデルを使用してファイルシステムの読み取り権限を設定します。
--allow-fs-read
フラグの有効な引数は次のとおりです。
*
- すべてのFileSystemRead
操作を許可します。- 複数のパスを許可するには、複数の
--allow-fs-read
フラグを使用できます。例:--allow-fs-read=/folder1/ --allow-fs-read=/folder1/
カンマ(,
)で区切られたパスは許可されなくなりました。カンマを含む単一のフラグを渡すと、警告が表示されます。
例は、ファイルシステムの権限のドキュメントにあります。
相対パスは、CLIフラグではまだサポートされていません。
初期化モジュールも許可する必要があります。次の例を考えてみましょう。
$ node --experimental-permission t.js
node:internal/modules/cjs/loader:162
const result = internalModuleStat(filename);
^
Error: Access to this API has been restricted
at stat (node:internal/modules/cjs/loader:162:18)
at Module._findPath (node:internal/modules/cjs/loader:640:16)
at resolveMainPath (node:internal/modules/run_main:15:25)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:53:24)
at node:internal/main/run_main_module:23:47 {
code: 'ERR_ACCESS_DENIED',
permission: 'FileSystemRead',
resource: '/Users/rafaelgss/repos/os/node/t.js'
}
プロセスはindex.js
モジュールへのアクセス権を持っている必要があります。
node --experimental-permission --allow-fs-read=/path/to/index.js index.js
--allow-fs-write
#
このフラグは、パーミッションモデルを使用してファイルシステムの書き込み権限を設定します。
--allow-fs-write
フラグの有効な引数は次のとおりです。
*
- すべてのFileSystemWrite
操作を許可します。- 複数のパスを許可するには、複数の
--allow-fs-read
フラグを使用できます。例:--allow-fs-read=/folder1/ --allow-fs-read=/folder1/
カンマ(,
)で区切られたパスは許可されなくなりました。カンマを含む単一のフラグを渡すと、警告が表示されます。
例は、ファイルシステムの権限のドキュメントにあります。
相対パスは、CLIフラグではサポートされていません。
--allow-worker
#
パーミッションモデルを使用する場合、プロセスはデフォルトでワーカースレッドを作成できません。セキュリティ上の理由から、メインのNode.jsプロセスでフラグ--allow-worker
を明示的に渡さない限り、呼び出しはERR_ACCESS_DENIED
をスローします。
例
const { Worker } = require('node:worker_threads');
// Attempt to bypass the permission
new Worker(__filename);
$ node --experimental-permission --allow-fs-read=* index.js
node:internal/worker:188
this[kHandle] = new WorkerImpl(url,
^
Error: Access to this API has been restricted
at new Worker (node:internal/worker:188:21)
at Object.<anonymous> (/home/index.js.js:3:1)
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: 'WorkerThreads'
}
--build-snapshot
#
プロセスが終了するときにスナップショットブロブを生成し、それをディスクに書き込みます。これは後で--snapshot-blob
でロードできます。
スナップショットを構築するときに、--snapshot-blob
が指定されていない場合、生成されたブロブは、デフォルトで現在の作業ディレクトリのsnapshot.blob
に書き込まれます。それ以外の場合は、--snapshot-blob
で指定されたパスに書き込まれます。
$ echo "globalThis.foo = 'I am from the snapshot'" > snapshot.js
# Run snapshot.js to initialize the application and snapshot the
# state of it into snapshot.blob.
$ node --snapshot-blob snapshot.blob --build-snapshot snapshot.js
$ echo "console.log(globalThis.foo)" > index.js
# Load the generated snapshot and start the application from index.js.
$ 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ドキュメントを確認してください。
現在、ランタイムスナップショットのサポートは実験的であり、次のような制限があります。
- ユーザーランドモジュールはまだスナップショットでサポートされていないため、スナップショットできるのは単一のファイルのみです。ただし、ユーザーはスナップショットを構築する前に、任意のバンドラーを使用してアプリケーションを単一のスクリプトにバンドルできます。
- 組み込みモジュールのサブセットのみがスナップショットで機能しますが、Node.jsコアテストスイートでは、いくつかの非常に複雑なアプリケーションをスナップショットできることが確認されています。より多くのモジュールのサポートが追加されています。スナップショットを構築するときにクラッシュやバグのある動作が発生した場合は、Node.jsのIssue Trackerにレポートを提出し、ユーザーランドスナップショットの追跡Issueにリンクしてください。
--build-snapshot-config
#
スナップショット作成の動作を設定するJSON構成ファイルへのパスを指定します。
現在、次のオプションがサポートされています。
builder
<string> 必須。スナップショットを構築する前に実行されるスクリプトの名前を、--build-snapshot
がbuilder
をメインスクリプト名として渡された場合と同様に指定します。withoutCodeCache
<boolean> オプション。コードキャッシュを含めると、スナップショットに含まれる関数のコンパイルに費やす時間が短縮されますが、スナップショットのサイズが大きくなり、スナップショットの移植性が損なわれる可能性があります。
このフラグを使用すると、コマンドラインで提供される追加のスクリプトファイルは実行されず、代わりに通常のコマンドライン引数として解釈されます。
-c
, --check
#
実行せずにスクリプトの構文をチェックします。
--completion-bash
#
Node.jsのソース可能なbash補完スクリプトを出力します。
node --completion-bash > node_bash_completion
source node_bash_completion
-C condition
, --conditions=condition
#
カスタムの条件付きエクスポートの解決条件の実験的なサポートを有効にします。
任意の数のカスタム文字列条件名を使用できます。
"node"
、"default"
、"import"
、および"require"
のデフォルトのNode.js条件は、定義どおりに常に適用されます。
たとえば、「development」解決でモジュールを実行するには、次のようにします。
node -C development app.js
--cpu-prof
#
起動時に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
#
--cpu-prof
によって生成されたCPUプロファイルが配置されるディレクトリを指定します。
デフォルト値は、--diagnostic-dir
コマンドラインオプションによって制御されます。
--cpu-prof-interval
#
--cpu-prof
によって生成されたCPUプロファイルのサンプリング間隔をマイクロ秒単位で指定します。デフォルトは1000マイクロ秒です。
--cpu-prof-name
#
--cpu-prof
によって生成されたCPUプロファイルの名前を指定します。
--diagnostic-dir=directory
#
すべての診断出力ファイルが書き込まれるディレクトリを設定します。デフォルトは現在の作業ディレクトリです。
次のデフォルト出力ディレクトリに影響します。
--disable-warning=code-or-type
#
code
またはtype
で特定のプロセス警告を無効にします。
process.emitWarning()
から発行された警告には、code
とtype
が含まれる場合があります。このオプションは、一致するcode
またはtype
を持つ警告を出力しません。
非推奨のAPIのリスト。
Node.jsのコア警告タイプは、DeprecationWarning
とExperimentalWarning
です。
たとえば、次のスクリプトは、node --disable-warning=DEP0025
で実行した場合、DEP0025 require('node:sys')
を出力しません。
import sys from 'node:sys';
const sys = require('node:sys');
たとえば、次のスクリプトは、DEP0025 require('node:sys')
を出力しますが、node --disable-warning=ExperimentalWarning
で実行した場合、Experimental Warning(<=v21のExperimentalWarning: vm.measureMemory
は実験的な機能ですなど)は出力しません。
import sys from 'node:sys';
import vm from 'node:vm';
vm.measureMemory();
const sys = require('node:sys');
const vm = require('node:vm');
vm.measureMemory();
--disable-proto=mode
#
Object.prototype.__proto__
プロパティを無効にします。mode
がdelete
の場合、プロパティは完全に削除されます。mode
がthrow
の場合、プロパティへのアクセスは、コードERR_PROTO_ACCESS
で例外をスローします。
--disallow-code-generation-from-strings
#
文字列からコードを生成するeval
やnew Function
などの組み込み言語機能を、代わりに例外をスローするようにします。これは、Node.jsのnode:vm
モジュールには影響しません。
--dns-result-order=order
#
dns.lookup()
およびdnsPromises.lookup()
でverbatim
のデフォルト値を設定します。値は次のいずれかになります。
ipv4first
:デフォルトのverbatim
をfalse
に設定します。verbatim
:デフォルトのverbatim
をtrue
に設定します。
デフォルトはverbatim
であり、dns.setDefaultResultOrder()
は--dns-result-order
よりも優先度が高くなります。
--enable-fips
#
起動時にFIPS準拠の暗号化を有効にします。(Node.jsがFIPS互換のOpenSSLに対してビルドされている必要があります。)
--enable-network-family-autoselection
#
接続オプションで明示的に無効にしない限り、ファミリ自動選択アルゴリズムを有効にします。
--enable-source-maps
#
スタックトレースのSource Map v3のサポートを有効にします。
TypeScriptなどのトランスパイラを使用する場合、アプリケーションによってスローされたスタックトレースは、元のソース位置ではなく、トランスパイルされたコードを参照します。--enable-source-maps
は、ソースマップのキャッシュを有効にし、元のソースファイルに関連するスタックトレースを報告するように最善を尽くします。
Error.prepareStackTrace
をオーバーライドすると、--enable-source-maps
がスタックトレースを変更するのを妨げる可能性があります。ソースマップでスタックトレースを変更するには、オーバーライド関数で元のError.prepareStackTrace
の呼び出しと結果を返します。
const originalPrepareStackTrace = Error.prepareStackTrace;
Error.prepareStackTrace = (error, trace) => {
// Modify error and trace and format stack trace with
// original Error.prepareStackTrace.
return originalPrepareStackTrace(error, trace);
};
ソースマップを有効にすると、Error.stack
にアクセスするときにアプリケーションに遅延が発生する可能性があることに注意してください。アプリケーションでError.stack
に頻繁にアクセスする場合は、--enable-source-maps
のパフォーマンスへの影響を考慮してください。
--env-file=config
#
現在のディレクトリを基準としたファイルから環境変数をロードし、process.env
でアプリケーションで使用できるようにします。NODE_OPTIONS
などのNode.jsを設定する環境変数が解析され、適用されます。同じ変数が環境とファイルの両方で定義されている場合、環境からの値が優先されます。
--env-file
引数は複数渡すことができます。後続のファイルは、前のファイルで定義された既存の変数を上書きします。
node --env-file=.env --env-file=.development.env index.js
ファイル形式は、環境変数名と値を =
で区切ったキーと値のペアを1行に記述する必要があります。
PORT=3000
#
の後のテキストはすべてコメントとして扱われます。
# This is a comment
PORT=3000 # This is also a comment
値は、次の引用符で開始および終了できます: \
、"
、または '
。これらは値から省略されます。
USERNAME="nodejs" # will result in `nodejs` as the value.
複数行の値がサポートされています。
MULTI_LINE="THIS IS
A MULTILINE"
# will result in `THIS IS\nA MULTILINE` as the value.
キーの前の Export キーワードは無視されます。
export USERNAME="nodejs" # will result in `nodejs` as the value.
-e
, --eval "script"
#
次の引数を JavaScript として評価します。REPL で事前定義されているモジュールも script
で使用できます。
Windows では、cmd.exe
を使用すると、引用符としてダブル "
のみが認識されるため、シングルクォートは正しく機能しません。PowerShell または Git bash では、'
と "
の両方が使用可能です。
--experimental-default-type=type
#
次のものに使用するモジュールシステム(module
または commonjs
)を定義します。
-
--input-type
が指定されていない場合、--eval
または STDIN を介して提供される文字列入力。 -
同じフォルダーまたは親フォルダーに
package.json
ファイルが存在しない場合、.js
で終わるファイル、または拡張子のないファイル。 -
最寄りの親
package.json
フィールドに"type"
フィールドがない場合、.js
で終わるファイル、または拡張子のないファイル。ただし、package.json
フォルダーまたは親フォルダーがnode_modules
フォルダー内にある場合を除きます。
言い換えると、--experimental-default-type=module
は、Node.js が現在 CommonJS をデフォルトとしているすべての場所を、後方互換性のために node_modules
より下のフォルダーとサブフォルダーを除いて、代わりに ECMAScript モジュールをデフォルトとするように切り替えます。
--experimental-default-type=module
および --experimental-wasm-modules
の下では、拡張子のないファイルは、WebAssembly マジックナンバー (\0asm
) で始まる場合、WebAssembly として扱われます。それ以外の場合は、ES モジュール JavaScript として扱われます。
--experimental-detect-module
#
Node.js は、あいまいな入力のソースコードを検査して、ES モジュールの構文が含まれているかどうかを判断します。そのような構文が検出された場合、入力は ES モジュールとして扱われます。
あいまいな入力は次のように定義されます。
.js
拡張子または拡張子のないファイルで、制御用のpackage.json
ファイルがないか、type
フィールドがないもの。また、--experimental-default-type
が指定されていない場合。--input-type
も--experimental-default-type
も指定されていない場合の文字列入力(--eval
または STDIN)。
ES モジュール構文は、CommonJS として評価された場合にスローされる構文として定義されます。これには、import
および export
ステートメントと import.meta
参照が含まれます。CommonJS では有効な import()
式は含まれません。
--experimental-import-meta-resolve
#
コンテキスト解決のために2番目の parentURL
引数を渡すことを可能にする、実験的な import.meta.resolve()
親 URL サポートを有効にします。
以前は、import.meta.resolve
機能全体をゲートしていました。
--experimental-loader=module
#
このフラグは推奨されておらず、将来の Node.js バージョンで削除される可能性があります。代わりに、
register()
を使用した--import
を使用してください。
エクスポートされた モジュールカスタマイズフックを含む module
を指定します。module
は、import
指定子として受け入れられる任意の文字列にすることができます。
--experimental-network-imports
#
import
指定子での https:
プロトコルの実験的サポートを有効にします。
--experimental-permission
#
現在のプロセスの権限モデルを有効にします。有効にすると、次の権限が制限されます。
- ファイルシステム -
--allow-fs-read
、--allow-fs-write
フラグで管理可能 - 子プロセス -
--allow-child-process
フラグで管理可能 - ワーカー スレッド -
--allow-worker
フラグで管理可能
--experimental-policy
#
指定されたファイルをセキュリティポリシーとして使用します。
--experimental-sea-config
#
このフラグを使用して、Node.js バイナリに挿入して 単一実行可能アプリケーションを作成できる blob を生成します。詳細については、この構成に関するドキュメントを参照してください。
--experimental-shadow-realm
#
このフラグを使用して ShadowRealm のサポートを有効にします。
--experimental-test-coverage
#
node:test
モジュールと組み合わせて使用すると、テストランナー出力の一部としてコードカバレッジレポートが生成されます。テストが実行されない場合、カバレッジレポートは生成されません。詳細については、テストからのコードカバレッジの収集に関するドキュメントを参照してください。
--experimental-vm-modules
#
node:vm
モジュールで実験的な ES モジュールのサポートを有効にします。
--experimental-wasi-unstable-preview1
#
実験的な WebAssembly System Interface (WASI) のサポートを有効にします。
--experimental-wasm-modules
#
実験的な WebAssembly モジュールのサポートを有効にします。
--experimental-websocket
#
実験的な WebSocket
のサポートを有効にします。
--force-context-aware
#
コンテキスト認識ではないネイティブアドオンの読み込みを無効にします。
--force-fips
#
起動時に FIPS 準拠の暗号化を強制します。(スクリプトコードから無効にすることはできません。)(--enable-fips
と同じ要件です。)
--force-node-api-uncaught-exceptions-policy
#
Node-API 非同期コールバックで uncaughtException
イベントを強制します。
既存のアドオンがプロセスをクラッシュさせるのを防ぐため、このフラグはデフォルトでは有効になっていません。将来的には、このフラグがデフォルトで有効になり、正しい動作が強制されます。
--frozen-intrinsics
#
Array
や Object
などの実験的なフローズン組み込みを有効にします。
ルートコンテキストのみがサポートされています。globalThis.Array
が実際にデフォルトの組み込み参照であるという保証はありません。このフラグの下ではコードが破損する可能性があります。
ポリフィルを追加できるように、--require
および --import
は両方とも組み込みをフリーズする前に実行されます。
--heap-prof
#
起動時に 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
#
--heap-prof
によって生成されたヒーププロファイルが配置されるディレクトリを指定します。
デフォルト値は、--diagnostic-dir
コマンドラインオプションによって制御されます。
--heap-prof-interval
#
--heap-prof
によって生成されたヒーププロファイルのバイト単位の平均サンプリング間隔を指定します。デフォルトは 512 * 1024 バイトです。
--heap-prof-name
#
--heap-prof
によって生成されたヒーププロファイルの名前を指定します。
--heapsnapshot-near-heap-limit=max_count
#
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
#
指定されたシグナルを受信したときに、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
#
node コマンドラインオプションを表示します。このオプションの出力は、このドキュメントよりも詳細度が低いです。
--icu-data-dir=file
#
ICUデータロードパスを指定します。(NODE_ICU_DATA
を上書きします。)
--import=module
#
起動時に指定されたモジュールをプリロードします。このフラグが複数回指定された場合、各モジュールは、NODE_OPTIONS
で指定されたものから順に、表示される順序で実行されます。
ECMAScriptモジュールの解決ルールに従います。--require
を使用して、CommonJSモジュールをロードします。--require
でプリロードされたモジュールは、--import
でプリロードされたモジュールよりも前に実行されます。
--input-type=type
#
これにより、Node.jsが--eval
またはSTDIN
入力をCommonJSまたはESモジュールとして解釈するように構成されます。有効な値は、"commonjs"
または"module"
です。デフォルトは、--experimental-default-type=module
が使用されない限り、"commonjs"
です。
REPLはこのオプションをサポートしていません。--print
で--input-type=module
を使用すると、--print
はESモジュール構文をサポートしていないため、エラーがスローされます。
--insecure-http-parser
#
HTTPパーサーで寛容フラグを有効にします。これにより、非準拠のHTTP実装との相互運用が可能になる場合があります。
有効にすると、パーサーは以下を受け入れます。
- 無効なHTTPヘッダーの値。
- 無効なHTTPバージョン。
Transfer-Encoding
とContent-Length
ヘッダーの両方を含むメッセージを許可します。Connection: close
が存在する場合、メッセージ後の余分なデータを許可します。chunked
が提供された後に追加の転送エンコーディングを許可します。\r\n
の代わりに\n
をトークン区切り文字として使用することを許可します。- チャンクの後に
\r\n
を提供しないことを許可します。 - チャンクサイズの後および
\r\n
の前にスペースが存在することを許可します。
上記すべてにより、アプリケーションはリクエスト密輸またはポイズニング攻撃にさらされます。このオプションの使用は避けてください。
--inspect[=[host:]port]
#
host:port
でインスペクターをアクティブにします。デフォルトは127.0.0.1:9229
です。
V8インスペクター統合により、Chrome DevToolsやIDEなどのツールでNode.jsインスタンスをデバッグおよびプロファイリングできます。ツールはtcpポートを介してNode.jsインスタンスに接続し、Chrome DevTools Protocolを使用して通信します。
警告: インスペクターを公開IP:ポートの組み合わせにバインドすることは安全ではありません#
インスペクターをオープンポートを持つ公開IP(0.0.0.0
を含む)にバインドすることは安全ではありません。これにより、外部ホストがインスペクターに接続してリモートコード実行攻撃を実行できるためです。
ホストを指定する場合は、次のいずれかを確認してください。
- ホストがパブリックネットワークからアクセスできない。
- ファイアウォールがポートで不要な接続を許可しない。
具体的には、ポート(デフォルトでは9229
)がファイアウォールで保護されていない場合、--inspect=0.0.0.0
は安全ではありません。
詳細については、デバッグセキュリティの考慮事項セクションを参照してください。
--inspect-brk[=[host:]port]
#
host:port
でインスペクターをアクティブにし、ユーザースクリプトの開始時に中断します。デフォルトのhost:port
は127.0.0.1:9229
です。
--inspect-port=[host:]port
#
インスペクターがアクティブ化されたときに使用されるhost:port
を設定します。SIGUSR1
シグナルを送信してインスペクターをアクティブにする場合に便利です。
デフォルトのホストは127.0.0.1
です。
host
パラメーターの使用に関する以下のセキュリティ警告を参照してください。
--inspect-publish-uid=stderr,http
#
インスペクターのWebソケットURLを公開する方法を指定します。
デフォルトでは、インスペクターのwebsocket URLはstderrとhttp://host:port/json/list
の/json/list
エンドポイントで利用できます。
-i
, --interactive
#
stdinがターミナルではない場合でも、REPLを開きます。
--jitless
#
実行可能メモリのランタイム割り当てを無効にします。これは、一部のプラットフォームではセキュリティ上の理由で必要になる場合があります。また、他のプラットフォームでの攻撃対象領域を減らすこともできますが、パフォーマンスへの影響は深刻になる可能性があります。
--max-http-header-size=size
#
HTTPヘッダーの最大サイズをバイト単位で指定します。デフォルトは16KiBです。
--napi-modules
#
このオプションはno-opです。互換性のために保持されています。
--no-addons
#
node-addons
のエクスポート条件を無効にするだけでなく、ネイティブアドオンのロードを無効にします。--no-addons
が指定されている場合、process.dlopen
を呼び出すか、ネイティブC++アドオンを必要とすると、失敗して例外がスローされます。
--no-deprecation
#
非推奨の警告を抑制します。
--no-experimental-fetch
#
グローバルスコープでのFetch APIの公開を無効にします。
--no-experimental-global-customevent
#
グローバルスコープでのCustomEvent Web APIの公開を無効にします。
--no-experimental-global-navigator
#
グローバルスコープでのNavigator APIの公開を無効にします。
--no-experimental-global-webcrypto
#
グローバルスコープでのWeb Crypto APIの公開を無効にします。
--no-experimental-repl-await
#
このフラグを使用して、REPLでのトップレベルのawaitを無効にします。
--no-extra-info-on-fatal-exception
#
終了の原因となる致命的な例外に関する追加情報を非表示にします。
--no-force-async-hooks-checks
#
async_hooks
のランタイムチェックを無効にします。これらは、async_hooks
が有効になっている場合に動的に有効になります。
--no-global-search-paths
#
$HOME/.node_modules
や$NODE_PATH
などのグローバルパスからモジュールを検索しません。
--no-network-family-autoselection
#
接続オプションで明示的に有効にしない限り、ファミリー自動選択アルゴリズムを無効にします。
--no-warnings
#
すべてのプロセス警告(非推奨を含む)を抑制します。
--node-memory-debug
#
Node.js内部のメモリリークに関する追加のデバッグチェックを有効にします。これは通常、Node.js自体をデバッグする開発者にのみ役立ちます。
--openssl-config=file
#
起動時にOpenSSL構成ファイルをロードします。他の用途の中でも、Node.jsがFIPS対応のOpenSSLに対してビルドされている場合、これを使用してFIPS準拠の暗号化を有効にできます。
--openssl-legacy-provider
#
OpenSSL 3.0レガシープロバイダーを有効にします。詳細については、OSSL_PROVIDER-legacyを参照してください。
--openssl-shared-config
#
OpenSSLのデフォルト構成セクションであるopenssl_conf
をOpenSSL構成ファイルから読み取ることを有効にします。デフォルトの構成ファイルはopenssl.cnf
という名前ですが、環境変数OPENSSL_CONF
を使用するか、コマンドラインオプション--openssl-config
を使用して変更できます。デフォルトのOpenSSL構成ファイルの場所は、OpenSSLがNode.jsにどのようにリンクされているかによって異なります。OpenSSL構成を共有すると、意図しない影響が生じる可能性があり、このオプションが使用されていない場合のデフォルトであるnodejs_conf
であるNode.js固有の構成セクションを使用することをお勧めします。
--pending-deprecation
#
保留中の非推奨警告を発行します。
保留中の非推奨は、一般的にランタイム非推奨と同じですが、注目すべき例外として、デフォルトでオフになっており、--pending-deprecation
コマンドラインフラグまたはNODE_PENDING_DEPRECATION=1
環境変数が設定されていない限り発行されません。保留中の非推奨は、開発者が非推奨のAPI使用を検出するために利用できる、一種の選択的な「早期警告」メカニズムを提供するために使用されます。
--policy-integrity=sri
#
ポリシーが指定された整合性を持たない場合、コードを実行する前に Node.js にエラーを発生させるように指示します。パラメータとして Subresource Integrity 文字列が必要です。
--preserve-symlinks
#
モジュールを解決およびキャッシュする際に、モジュールローダーにシンボリックリンクを保持するように指示します。
デフォルトでは、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
#
モジュールローダーに、メインモジュール(require.main
)を解決およびキャッシュする際にシンボリックリンクを保持するように指示します。
このフラグは、メインモジュールが --preserve-symlinks
が他のすべてのインポートに与える動作と同じ動作を選択できるようにするために存在します。ただし、古いバージョンの Node.js との下位互換性を保つために、これらは別個のフラグです。
--preserve-symlinks-main
は --preserve-symlinks
を暗示するものではありません。相対パスを解決する前にシンボリックリンクをたどらないことが望ましい場合は、--preserve-symlinks
に加えて --preserve-symlinks-main
を使用してください。
詳細については、--preserve-symlinks
を参照してください。
-p
, --print "script"
#
-e
と同じですが、結果を出力します。
--prof
#
V8 プロファイラーの出力を生成します。
--prof-process
#
V8 オプション --prof
を使用して生成された V8 プロファイラーの出力を処理します。
--redirect-warnings=file
#
stderr に出力する代わりに、プロセスの警告を指定されたファイルに書き込みます。ファイルが存在しない場合は作成され、存在する場合は追加されます。ファイルを書き込もうとしてエラーが発生した場合、代わりに警告が stderr に書き込まれます。
file
名は絶対パスでもかまいません。そうでない場合は、書き込まれるデフォルトのディレクトリは --diagnostic-dir
コマンドラインオプションによって制御されます。
--report-compact
#
人間が消費できるように設計されたデフォルトの複数行形式よりも、ログ処理システムでより簡単に消費できる、コンパクトな形式、単一行 JSON でレポートを書き込みます。
--report-dir=directory
, report-directory=directory
#
レポートが生成される場所。
--report-filename=filename
#
レポートが書き込まれるファイルの名前。
ファイル名が 'stdout'
または 'stderr'
に設定されている場合、レポートはそれぞれプロセスの stdout または stderr に書き込まれます。
--report-on-fatalerror
#
アプリケーションの終了につながる致命的なエラー(メモリ不足など、Node.js ランタイム内の内部エラー)が発生した場合にレポートをトリガーできるようにします。ヒープ、スタック、イベントループの状態、リソース消費など、さまざまな診断データ要素を検査して、致命的なエラーの原因を推論するのに役立ちます。
--report-on-signal
#
実行中の Node.js プロセスに、指定された(または定義済みの)シグナルを受信したときにレポートを生成できるようにします。レポートをトリガーするシグナルは --report-signal
で指定されます。
--report-signal=signal
#
レポート生成のシグナルを設定またはリセットします(Windows ではサポートされていません)。デフォルトのシグナルは SIGUSR2
です。
--report-uncaught-exception
#
プロセスがキャッチされない例外が原因で終了したときに、レポートを生成できるようにします。ネイティブスタックやその他のランタイム環境データと組み合わせて JavaScript スタックを検査する場合に役立ちます。
-r
, --require module
#
起動時に指定されたモジュールをプリロードします。
require()
のモジュール解決ルールに従います。module
はファイルへのパス、またはノードモジュール名です。
CommonJS モジュールのみがサポートされています。--import
を使用して ECMAScript モジュール をプリロードします。--require
でプリロードされたモジュールは、--import
でプリロードされたモジュールよりも前に実行されます。
--secure-heap=n
#
n
バイトの OpenSSL セキュアヒープを初期化します。初期化されると、セキュアヒープは、キー生成やその他の操作中に OpenSSL 内の選択されたタイプの割り当てに使用されます。これは、例えば、ポインタのオーバーランまたはアンダーランによって機密情報が漏洩するのを防ぐのに役立ちます。
セキュアヒープは固定サイズであり、実行時にサイズ変更できないため、使用する場合は、すべてのアプリケーションの使用をカバーするのに十分な大きさのヒープを選択することが重要です。
指定されたヒープサイズは 2 のべき乗である必要があります。2 未満の値はセキュアヒープを無効にします。
セキュアヒープはデフォルトで無効になっています。
セキュアヒープは Windows では利用できません。
詳細については、CRYPTO_secure_malloc_init
を参照してください。
--secure-heap-min=n
#
--secure-heap
を使用する場合、--secure-heap-min
フラグはセキュアヒープからの最小割り当てを指定します。最小値は 2
です。最大値は、--secure-heap
または 2147483647
のうち小さい方です。指定された値は 2 のべき乗である必要があります。
--snapshot-blob=path
#
--build-snapshot
と一緒に使用する場合、--snapshot-blob
は、生成されたスナップショット BLOB が書き込まれるパスを指定します。指定しない場合、生成された BLOB は現在の作業ディレクトリの snapshot.blob
に書き込まれます。
--build-snapshot
なしで使用する場合、--snapshot-blob
は、アプリケーションの状態を復元するために使用される BLOB へのパスを指定します。
スナップショットをロードするとき、Node.js は以下を確認します。
- 実行中の Node.js バイナリのバージョン、アーキテクチャ、およびプラットフォームが、スナップショットを生成するバイナリと完全に同じであること。
- V8 フラグと CPU 機能が、スナップショットを生成するバイナリと互換性があること。
一致しない場合、Node.js はスナップショットのロードを拒否し、ステータスコード 1 で終了します。
--test
#
Node.js コマンドラインテストランナーを開始します。このフラグは、--watch-path
、--check
、--eval
、--interactive
、またはインスペクターと組み合わせることはできません。詳細については、コマンドラインからのテストの実行に関するドキュメントを参照してください。
--test-concurrency
#
テストランナー CLI が同時に実行するテストファイルの最大数。デフォルト値は os.availableParallelism() - 1
です。
--test-name-pattern
#
提供されたパターンと名前が一致するテストのみを実行するようにテストランナーを構成する正規表現。詳細については、名前によるテストのフィルタリングに関するドキュメントを参照してください。
--test-only
#
only
オプションが設定されているトップレベルテストのみを実行するようにテストランナーを構成します。
--test-reporter
#
テストを実行するときに使用するテストレポーター。テストレポーターに関するドキュメントを参照してください。
--test-reporter-destination
#
対応するテストレポーターの出力先。テストレポーターに関するドキュメントを参照してください。
--test-shard
#
<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-timeout
#
テストの実行が失敗するまでのミリ秒数。未指定の場合、サブテストはこの値を親から継承します。デフォルト値は Infinity
です。
--throw-deprecation
#
非推奨に関するエラーをスローします。
--title=title
#
起動時に process.title
を設定します。
--tls-cipher-list=list
#
代替のデフォルトTLS暗号リストを指定します。Node.jsが暗号化サポート(デフォルト)付きでビルドされている必要があります。
--tls-keylog=file
#
TLSキーマテリアルをファイルに記録します。キーマテリアルはNSS SSLKEYLOGFILE
形式であり、TLSトラフィックを復号化するためにソフトウェア(Wiresharkなど)で使用できます。
--tls-max-v1.2
#
tls.DEFAULT_MAX_VERSION
を 'TLSv1.2' に設定します。TLSv1.3のサポートを無効にするために使用します。
--tls-max-v1.3
#
デフォルトの tls.DEFAULT_MAX_VERSION
を 'TLSv1.3' に設定します。TLSv1.3のサポートを有効にするために使用します。
--tls-min-v1.0
#
デフォルトの tls.DEFAULT_MIN_VERSION
を 'TLSv1' に設定します。古いTLSクライアントまたはサーバーとの互換性のために使用します。
--tls-min-v1.1
#
デフォルトの tls.DEFAULT_MIN_VERSION
を 'TLSv1.1' に設定します。古いTLSクライアントまたはサーバーとの互換性のために使用します。
--tls-min-v1.2
#
デフォルトの tls.DEFAULT_MIN_VERSION
を 'TLSv1.2' に設定します。これは12.x以降のデフォルトですが、古いNode.jsバージョンとの互換性のためにオプションがサポートされています。
--tls-min-v1.3
#
デフォルトの tls.DEFAULT_MIN_VERSION
を 'TLSv1.3' に設定します。TLSv1.3ほど安全ではないTLSv1.2のサポートを無効にするために使用します。
--trace-atomics-wait
#
Atomics.wait()
の呼び出しに関する簡単な要約をstderrに出力します。出力は次のようになります。
(node:15701) [Thread 0] Atomics.wait(<address> + 0, 1, inf) started
(node:15701) [Thread 0] Atomics.wait(<address> + 0, 1, inf) did not wait because the values mismatched
(node:15701) [Thread 0] Atomics.wait(<address> + 0, 0, 10) started
(node:15701) [Thread 0] Atomics.wait(<address> + 0, 0, 10) timed out
(node:15701) [Thread 0] Atomics.wait(<address> + 4, 0, inf) started
(node:15701) [Thread 1] Atomics.wait(<address> + 4, -1, inf) started
(node:15701) [Thread 0] Atomics.wait(<address> + 4, 0, inf) was woken up by another thread
(node:15701) [Thread 1] Atomics.wait(<address> + 4, -1, inf) was woken up by another thread
ここでのフィールドは、次のものに対応します。
worker_threads.threadId
によって与えられるスレッドID- 問題の
SharedArrayBuffer
のベースアドレス、およびAtomics.wait()
に渡されたインデックスに対応するバイトオフセット Atomics.wait()
に渡された期待値Atomics.wait
に渡されたタイムアウト
--trace-deprecation
#
非推奨のスタックトレースを出力します。
--trace-event-categories
#
--trace-events-enabled
を使用してトレースイベントトレースが有効になっている場合にトレースする必要があるカテゴリのコンマ区切りリスト。
--trace-event-file-pattern
#
トレースイベントデータのファイルパスを指定するテンプレート文字列。${rotation}
および ${pid}
をサポートしています。
--trace-events-enabled
#
トレースイベントトレース情報の収集を有効にします。
--trace-exit
#
環境が積極的に終了したとき、つまり process.exit()
を呼び出したときに、スタックトレースを出力します。
--trace-sigint
#
SIGINTでスタックトレースを出力します。
--trace-sync-io
#
イベントループの最初のターン後に同期I/Oが検出されるたびにスタックトレースを出力します。
--trace-tls
#
TLSパケットトレース情報を stderr
に出力します。これは、TLS接続の問題をデバッグするために使用できます。
--trace-uncaught
#
キャッチされない例外のスタックトレースを出力します。通常、Error
の作成に関連付けられたスタックトレースが出力されますが、これにより、Node.jsは値のスローに関連付けられたスタックトレース(Error
インスタンスである必要はありません)も出力します。
このオプションを有効にすると、ガベージコレクションの動作に悪影響を与える可能性があります。
--trace-warnings
#
プロセスの警告(非推奨を含む)のスタックトレースを出力します。
--track-heap-objects
#
ヒープスナップショットのためにヒープオブジェクトの割り当てを追跡します。
--unhandled-rejections=mode
#
このフラグを使用すると、キャッチされないリジェクションが発生したときに何が起こるかを変更できます。次のモードのいずれかを選択できます。
throw
:unhandledRejection
を出力します。このフックが設定されていない場合は、キャッチされないリジェクションをキャッチされない例外として発生させます。これがデフォルトです。strict
: キャッチされないリジェクションをキャッチされない例外として発生させます。例外が処理された場合、unhandledRejection
が出力されます。warn
:unhandledRejection
フックが設定されているかどうかに関係なく、常に警告をトリガーしますが、非推奨の警告は出力しません。warn-with-error-code
:unhandledRejection
を出力します。このフックが設定されていない場合は、警告をトリガーし、プロセスの終了コードを1に設定します。none
: すべての警告を抑制します。
コマンドラインエントリポイントのESモジュール静的ロードフェーズ中にリジェクションが発生した場合、常にキャッチされない例外として発生させます。
--use-bundled-ca
, --use-openssl-ca
#
現在の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
#
起動時にNode.jsの静的コードを大きなメモリページに再マップします。ターゲットシステムでサポートされている場合、これにより、Node.jsの静的コードが4 KiBページではなく2 MiBページに移動します。
mode
には次の値が有効です。
off
: マッピングは試行されません。これがデフォルトです。on
: OSでサポートされている場合、マッピングが試行されます。マッピングの失敗は無視され、標準エラーにメッセージが出力されます。silent
: OSでサポートされている場合、マッピングが試行されます。マッピングの失敗は無視され、報告されません。
--v8-options
#
V8コマンドラインオプションを出力します。
--v8-pool-size=num
#
バックグラウンドジョブの割り当てに使用されるV8のスレッドプールサイズを設定します。
0
に設定すると、Node.jsは並列処理量の推定に基づいてスレッドプールの適切なサイズを選択します。
並列処理の度合いとは、特定のマシンで同時に実行できる計算の数を指します。一般的にはCPUの数と同じですが、VMやコンテナなどの環境では異なる場合があります。
-v
, --version
#
Nodeのバージョンを表示します。
--watch
#
Node.jsをウォッチモードで起動します。ウォッチモードでは、監視対象ファイルの変更があるとNode.jsプロセスが再起動されます。デフォルトでは、ウォッチモードはエントリポイントと、requireまたはimportされたすべてのモジュールを監視します。監視するパスを指定するには、--watch-path
を使用してください。
このフラグは、--check
、--eval
、--interactive
、またはREPLと組み合わせて使用することはできません。
node --watch index.js
--watch-path
#
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
#
ウォッチモードでプロセスが再起動するときに、コンソールをクリアしないようにします。
node --watch --watch-preserve-output test.js
--zero-fill-buffers
#
新しく割り当てられたすべてのBuffer
とSlowBuffer
インスタンスを自動的にゼロで埋めます。
環境変数#
FORCE_COLOR=[1, 2, 3]
#
FORCE_COLOR
環境変数は、ANSIカラー出力の有効化に使用されます。値は以下のいずれかです。
1
、true
、または空文字列''
は16色サポートを示し、2
は256色サポートを示し、3
は1600万色サポートを示します。
FORCE_COLOR
が使用され、サポートされている値に設定されている場合、NO_COLOR
とNODE_DISABLE_COLORS
の両方の環境変数が無視されます。
その他の値は、カラー出力が無効になります。
NO_COLOR=<any>
#
NO_COLOR
はNODE_DISABLE_COLORS
のエイリアスです。環境変数の値は任意です。
NODE_DEBUG=module[,…]
#
デバッグ情報を出力するコアモジュールの','
区切りリスト。
NODE_DEBUG_NATIVE=module[,…]
#
デバッグ情報を出力するコアC++モジュールの','
区切りリスト。
NODE_DISABLE_COLORS=1
#
設定すると、REPLで色が使用されなくなります。
NODE_EXTRA_CA_CERTS=file
#
設定すると、よく知られた「ルート」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
#
ICU(Intl
オブジェクト)データへのデータパス。small-icuサポートでコンパイルされている場合、リンクされたデータを拡張します。
NODE_NO_WARNINGS=1
#
1
に設定すると、プロセスの警告は抑制されます。
NODE_OPTIONS=options...
#
コマンドラインオプションのスペース区切りリスト。options...
はコマンドラインオプションの前に解釈されるため、コマンドラインオプションはoptions...
内のものよりも優先または合成されます。環境で許可されていないオプション(-p
やスクリプトファイルなど)が使用された場合、Node.jsはエラーで終了します。
オプションの値にスペースが含まれている場合は、二重引用符を使用してエスケープできます
NODE_OPTIONS='--require "./my path/file.js"'
コマンドラインオプションとして渡されたシングルトンフラグは、NODE_OPTIONS
に渡された同じフラグを上書きします
# The inspector will be available on port 5555
NODE_OPTIONS='--inspect=localhost:4444' node --inspect=localhost:5555
複数回渡すことができるフラグは、NODE_OPTIONS
のインスタンスが最初に渡され、その後にコマンドラインのインスタンスが渡されたかのように処理されます
NODE_OPTIONS='--require "./a.js"' node --require "./b.js"
# is equivalent to:
node --require "./a.js" --require "./b.js"
許可されているNode.jsオプションは次のとおりです
--allow-addons
--allow-child-process
--allow-fs-read
--allow-fs-write
--allow-worker
--conditions
,-C
--diagnostic-dir
--disable-proto
--disable-warning
--dns-result-order
--enable-fips
--enable-network-family-autoselection
--enable-source-maps
--experimental-abortcontroller
--experimental-default-type
--experimental-detect-module
--experimental-import-meta-resolve
--experimental-json-modules
--experimental-loader
--experimental-modules
--experimental-network-imports
--experimental-permission
--experimental-policy
--experimental-shadow-realm
--experimental-specifier-resolution
--experimental-top-level-await
--experimental-vm-modules
--experimental-wasi-unstable-preview1
--experimental-wasm-modules
--experimental-websocket
--force-context-aware
--force-fips
--force-node-api-uncaught-exceptions-policy
--frozen-intrinsics
--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
--max-http-header-size
--napi-modules
--no-addons
--no-deprecation
--no-experimental-fetch
--no-experimental-global-customevent
--no-experimental-global-navigator
--no-experimental-global-webcrypto
--no-experimental-repl-await
--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
--policy-integrity
--preserve-symlinks-main
--preserve-symlinks
--prof-process
--redirect-warnings
--report-compact
--report-dir
,--report-directory
--report-filename
--report-on-fatalerror
--report-on-signal
--report-signal
--report-uncaught-exception
--require
,-r
--secure-heap-min
--secure-heap
--snapshot-blob
--test-only
--test-reporter-destination
--test-reporter
--test-shard
--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-atomics-wait
--trace-deprecation
--trace-event-categories
--trace-event-file-pattern
--trace-events-enabled
--trace-exit
--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
--huge-max-old-generation-size
--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[:…]
#
モジュール検索パスの前に付加されるディレクトリの':'
区切りリスト。
Windowsでは、代わりに';'
区切りリストです。
NODE_PENDING_DEPRECATION=1
#
1
に設定すると、保留中の非推奨警告が出力されます。
保留中の非推奨は、一般的にランタイム非推奨と同じですが、注目すべき例外として、デフォルトでオフになっており、--pending-deprecation
コマンドラインフラグまたはNODE_PENDING_DEPRECATION=1
環境変数が設定されていない限り発行されません。保留中の非推奨は、開発者が非推奨のAPI使用を検出するために利用できる、一種の選択的な「早期警告」メカニズムを提供するために使用されます。
NODE_PENDING_PIPE_INSTANCES=instances
#
パイプサーバーが接続を待機しているときに、保留中のパイプインスタンスハンドルの数を設定します。この設定はWindowsにのみ適用されます。
NODE_PRESERVE_SYMLINKS=1
#
1
に設定すると、モジュールローダーに、モジュールを解決およびキャッシュするときにシンボリックリンクを保持するように指示します。
NODE_REDIRECT_WARNINGS=file
#
設定すると、プロセスの警告はstderrに出力する代わりに、指定されたファイルに出力されます。ファイルが存在しない場合は作成され、存在する場合は追記されます。ファイルへの警告の書き込み中にエラーが発生した場合、警告は代わりにstderrに書き込まれます。これは、--redirect-warnings=file
コマンドラインフラグを使用することと同等です。
NODE_REPL_EXTERNAL_MODULE=file
#
組み込みREPLの代わりにロードされるNode.jsモジュールへのパス。この値を空文字列(''
)で上書きすると、組み込みREPLが使用されます。
NODE_REPL_HISTORY=file
#
永続的なREPL履歴の保存に使用されるファイルへのパス。デフォルトのパスは~/.node_repl_history
ですが、この変数で上書きされます。値を空文字列(''
または' '
)に設定すると、永続的なREPL履歴が無効になります。
NODE_SKIP_PLATFORM_CHECK=value
#
value
が'1'
と等しい場合、Node.jsの起動時にサポートされているプラットフォームのチェックがスキップされます。Node.jsが正しく実行されない可能性があります。サポートされていないプラットフォームで発生した問題は修正されません。
NODE_TEST_CONTEXT=value
#
value
が 'child'
の場合、テストレポーターのオプションは上書きされ、テスト出力は TAP 形式で標準出力に送信されます。他の値が提供された場合、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
を空文字列に設定すると、伝播を防止できます。
カバレッジ出力#
カバレッジは、トップレベルのキー 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
#
起動時に OpenSSL 設定ファイルをロードします。他の用途の中でも、Node.js が ./configure --openssl-fips
でビルドされている場合、これにより FIPS 準拠の暗号化を有効にできます。
--openssl-config
コマンドラインオプションが使用されている場合、この環境変数は無視されます。
SSL_CERT_DIR=dir
#
--use-openssl-ca
が有効な場合、これは信頼された証明書を含む OpenSSL のディレクトリを上書きして設定します。
子環境が明示的に設定されていない限り、この環境変数はすべての子プロセスに継承され、OpenSSL を使用している場合、Node と同じ CA を信頼してしまう可能性があることに注意してください。
SSL_CERT_FILE=file
#
--use-openssl-ca
が有効な場合、これは信頼された証明書を含む OpenSSL のファイルを上書きして設定します。
子環境が明示的に設定されていない限り、この環境変数はすべての子プロセスに継承され、OpenSSL を使用している場合、Node と同じ CA を信頼してしまう可能性があることに注意してください。
TZ
#
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()
- 明示的に同期するものを除く、すべての
zlib
API
libuv のスレッドプールには固定サイズがあるため、これらの API のいずれかが何らかの理由で長時間かかる場合、libuv のスレッドプールで実行される他の(無関係に見える)API のパフォーマンスが低下します。この問題を軽減するために、考えられる解決策の 1 つは、'UV_THREADPOOL_SIZE'
環境変数を 4
(現在のデフォルト値)よりも大きい値に設定して、libuv のスレッドプールのサイズを大きくすることです。詳細については、libuv スレッドプールのドキュメントを参照してください。
UV_USE_IO_URING=value
#
サポートされているプラットフォームで、libuv の io_uring
の使用を有効または無効にします。
サポートされているプラットフォームでは、io_uring
により、さまざまな非同期 I/O 操作のパフォーマンスを大幅に向上させることができます。
セキュリティ上の懸念から、io_uring
はデフォルトで無効になっています。io_uring
が有効になっている場合、アプリケーションは実行時にプロセスのユーザーIDを変更してはなりません。この場合、process.setuid()
などの JavaScript 関数は利用できず、ネイティブアドオンは setuid(2)
などのシステム関数を呼び出してはなりません。
この環境変数は Node.js の依存関係によって実装されており、将来の Node.js バージョンで削除される可能性があります。この環境変数の動作については、安定性の保証は提供されていません。
役立つ V8 オプション#
V8 には独自の CLI オプションのセットがあります。node
に提供された V8 CLI オプションはすべて、処理するために V8 に渡されます。V8 のオプションには安定性の保証はありません。V8 チーム自体は、それらを正式な API の一部とは考えておらず、いつでも変更する権利を留保しています。同様に、Node.js の安定性保証の対象外です。V8 オプションの多くは、V8 開発者のみが関心を持っています。それにもかかわらず、Node.js に広く適用できる V8 オプションの小さなセットがあり、ここに文書化されています。
--max-old-space-size=SIZE
(メガバイト単位)#
V8 の古いメモリセクションの最大メモリサイズを設定します。メモリ消費量が制限に近づくと、V8 は未使用メモリを解放するためにガベージコレクションにより多くの時間を費やします。
2 GiB のメモリを搭載したマシンでは、他の用途のためにメモリを残し、スワップを避けるために、これを 1536 (1.5 GiB) に設定することを検討してください。
node --max-old-space-size=1536 index.js
--max-semi-space-size=SIZE
(メガバイト単位)#
V8 の スカベンジガベージコレクターの最大セミスペースサイズを MiB (メガバイト) 単位で設定します。セミスペースの最大サイズを大きくすると、メモリ消費量は増えますが、Node.js のスループットが向上する可能性があります。
V8 ヒープの若い世代サイズはセミスペースのサイズの 3 倍であるため (V8 の YoungGenerationSizeFromSemiSpaceSize
を参照)、セミスペースへの 1 MiB の増加は、3 つの個々のセミスペースのそれぞれに適用され、ヒープサイズが 3 MiB 増加します。スループットの向上は、ワークロードによって異なります (#42511 を参照)。
デフォルト値は、64 ビットシステムでは 16 MiB、32 ビットシステムでは 8 MiB です。アプリケーションに最適な構成を得るには、アプリケーションのベンチマークを実行するときに、さまざまな max-semi-space-size 値を試す必要があります。
例: 64 ビットシステムでのベンチマーク
for MiB in 16 32 64 128; do
node --max-semi-space-size=$MiB index.js
done