| # Command Line Options |
| |
| <!--introduced_in=v5.9.1--> |
| <!--type=misc--> |
| |
| Node.js comes with a variety of CLI options. These options expose built-in |
| debugging, multiple ways to execute scripts, and other helpful runtime options. |
| |
| To view this documentation as a manual page in a terminal, run `man node`. |
| |
| ## Synopsis |
| |
| `node [options] [V8 options] [script.js | -e "script" | -] [--] [arguments]` |
| |
| `node inspect [script.js | -e "script" | <host>:<port>] …` |
| |
| `node --v8-options` |
| |
| Execute without arguments to start the [REPL][]. |
| |
| _For more info about `node inspect`, please see the [debugger][] documentation._ |
| |
| ## Options |
| <!-- YAML |
| changes: |
| - version: v10.12.0 |
| pr-url: https://github.com/nodejs/node/pull/23020 |
| description: Underscores instead of dashes are now allowed for |
| Node.js options as well, in addition to V8 options. |
| --> |
| |
| All options, including V8 options, allow words to be separated by both |
| dashes (`-`) or underscores (`_`). |
| |
| For example, `--pending-deprecation` is equivalent to `--pending_deprecation`. |
| |
| ### `-` |
| <!-- YAML |
| added: v8.0.0 |
| --> |
| |
| Alias for stdin. Analogous to the use of `-` in other command line utilities, |
| meaning that the script will be read from stdin, and the rest of the options |
| are passed to that script. |
| |
| ### `--` |
| <!-- YAML |
| added: v6.11.0 |
| --> |
| |
| Indicate the end of node options. Pass the rest of the arguments to the script. |
| If no script filename or eval/print script is supplied prior to this, then |
| the next argument will be used as a script filename. |
| |
| ### `--abort-on-uncaught-exception` |
| <!-- YAML |
| added: v0.10.8 |
| --> |
| |
| Aborting instead of exiting causes a core file to be generated for post-mortem |
| analysis using a debugger (such as `lldb`, `gdb`, and `mdb`). |
| |
| If this flag is passed, the behavior can still be set to not abort through |
| [`process.setUncaughtExceptionCaptureCallback()`][] (and through usage of the |
| `domain` module that uses it). |
| |
| ### `--completion-bash` |
| <!-- YAML |
| added: v10.12.0 |
| --> |
| |
| Print source-able bash completion script for Node.js. |
| |
| ```console |
| $ node --completion-bash > node_bash_completion |
| $ source node_bash_completion |
| ``` |
| |
| ### `--cpu-prof` |
| <!-- YAML |
| added: v12.0.0 |
| --> |
| |
| > Stability: 1 - Experimental |
| |
| Starts the V8 CPU profiler on start up, and writes the CPU profile to disk |
| before exit. |
| |
| If `--cpu-prof-dir` is not specified, the generated profile will be placed |
| in the current working directory. |
| |
| If `--cpu-prof-name` is not specified, the generated profile will be |
| named `CPU.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.cpuprofile`. |
| |
| ```console |
| $ node --cpu-prof index.js |
| $ ls *.cpuprofile |
| CPU.20190409.202950.15293.0.0.cpuprofile |
| ``` |
| |
| ### `--cpu-prof-dir` |
| <!-- YAML |
| added: v12.0.0 |
| --> |
| |
| > Stability: 1 - Experimental |
| |
| Specify the directory where the CPU profiles generated by `--cpu-prof` will |
| be placed. |
| |
| ### `--cpu-prof-interval` |
| <!-- YAML |
| added: v12.2.0 |
| --> |
| |
| > Stability: 1 - Experimental |
| |
| Specify the sampling interval in microseconds for the CPU profiles generated |
| by `--cpu-prof`. The default is 1000 microseconds. |
| |
| ### `--cpu-prof-name` |
| <!-- YAML |
| added: v12.0.0 |
| --> |
| |
| > Stability: 1 - Experimental |
| |
| Specify the file name of the CPU profile generated by `--cpu-prof`. |
| |
| ### `--disallow-code-generation-from-strings` |
| <!-- YAML |
| added: v9.8.0 |
| --> |
| |
| Make built-in language features like `eval` and `new Function` that generate |
| code from strings throw an exception instead. This does not affect the Node.js |
| `vm` module. |
| |
| ### `--enable-fips` |
| <!-- YAML |
| added: v6.0.0 |
| --> |
| |
| Enable FIPS-compliant crypto at startup. (Requires Node.js to be built with |
| `./configure --openssl-fips`.) |
| |
| ### `--enable-source-maps` |
| <!-- YAML |
| added: v12.12.0 |
| --> |
| |
| > Stability: 1 - Experimental |
| |
| Enable experimental Source Map V3 support for stack traces. |
| |
| Currently, overriding `Error.prepareStackTrace` is ignored when the |
| `--enable-source-maps` flag is set. |
| |
| ### `--experimental-import-meta-resolve` |
| <!-- YAML |
| added: v13.9.0 |
| --> |
| |
| Enable experimental `import.meta.resolve()` support. |
| |
| ### `--experimental-json-modules` |
| <!-- YAML |
| added: v12.9.0 |
| --> |
| |
| Enable experimental JSON support for the ES Module loader. |
| |
| ### `--experimental-modules` |
| <!-- YAML |
| added: v8.5.0 |
| --> |
| |
| Enable latest experimental modules features (deprecated). |
| |
| ### `--experimental-policy` |
| <!-- YAML |
| added: v11.8.0 |
| --> |
| |
| Use the specified file as a security policy. |
| |
| ### `--experimental-repl-await` |
| <!-- YAML |
| added: v10.0.0 |
| --> |
| |
| Enable experimental top-level `await` keyword support in REPL. |
| |
| ### `--experimental-report` |
| <!-- YAML |
| added: v11.8.0 |
| --> |
| |
| Enable experimental diagnostic report feature. |
| |
| ### `--experimental-specifier-resolution=mode` |
| <!-- YAML |
| added: v13.4.0 |
| --> |
| |
| Sets the resolution algorithm for resolving ES module specifiers. Valid options |
| are `explicit` and `node`. |
| |
| The default is `explicit`, which requires providing the full path to a |
| module. The `node` mode will enable support for optional file extensions and |
| the ability to import a directory that has an index file. |
| |
| Please see [customizing ESM specifier resolution][] for example usage. |
| |
| ### `--experimental-vm-modules` |
| <!-- YAML |
| added: v9.6.0 |
| --> |
| |
| Enable experimental ES Module support in the `vm` module. |
| |
| ### `--experimental-wasi-unstable-preview1` |
| <!-- YAML |
| added: v13.3.0 |
| changes: |
| - version: v13.6.0 |
| pr-url: https://github.com/nodejs/node/pull/30980 |
| description: changed from `--experimental-wasi-unstable-preview0` to |
| `--experimental-wasi-unstable-preview1` |
| --> |
| |
| Enable experimental WebAssembly System Interface (WASI) support. |
| |
| ### `--experimental-wasm-modules` |
| <!-- YAML |
| added: v12.3.0 |
| --> |
| |
| Enable experimental WebAssembly module support. |
| |
| ### `--force-fips` |
| <!-- YAML |
| added: v6.0.0 |
| --> |
| |
| Force FIPS-compliant crypto on startup. (Cannot be disabled from script code.) |
| (Same requirements as `--enable-fips`.) |
| |
| ### `--frozen-intrinsics` |
| <!-- YAML |
| added: v11.12.0 |
| --> |
| |
| > Stability: 1 - Experimental |
| |
| Enable experimental frozen intrinsics like `Array` and `Object`. |
| |
| Support is currently only provided for the root context and no guarantees are |
| currently provided that `global.Array` is indeed the default intrinsic |
| reference. Code may break under this flag. |
| |
| `--require` runs prior to freezing intrinsics in order to allow polyfills to |
| be added. |
| |
| ### `--heapsnapshot-signal=signal` |
| <!-- YAML |
| added: v12.0.0 |
| --> |
| |
| Enables a signal handler that causes the Node.js process to write a heap dump |
| when the specified signal is received. `signal` must be a valid signal name. |
| Disabled by default. |
| |
| ```console |
| $ 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 |
| ``` |
| |
| ### `--heap-prof` |
| <!-- YAML |
| added: v12.4.0 |
| --> |
| |
| > Stability: 1 - Experimental |
| |
| Starts the V8 heap profiler on start up, and writes the heap profile to disk |
| before exit. |
| |
| If `--heap-prof-dir` is not specified, the generated profile will be placed |
| in the current working directory. |
| |
| If `--heap-prof-name` is not specified, the generated profile will be |
| named `Heap.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.heapprofile`. |
| |
| ```console |
| $ node --heap-prof index.js |
| $ ls *.heapprofile |
| Heap.20190409.202950.15293.0.001.heapprofile |
| ``` |
| |
| ### `--heap-prof-dir` |
| <!-- YAML |
| added: v12.4.0 |
| --> |
| |
| > Stability: 1 - Experimental |
| |
| Specify the directory where the heap profiles generated by `--heap-prof` will |
| be placed. |
| |
| ### `--heap-prof-interval` |
| <!-- YAML |
| added: v12.4.0 |
| --> |
| |
| > Stability: 1 - Experimental |
| |
| Specify the average sampling interval in bytes for the heap profiles generated |
| by `--heap-prof`. The default is 512 * 1024 bytes. |
| |
| ### `--heap-prof-name` |
| <!-- YAML |
| added: v12.4.0 |
| --> |
| |
| > Stability: 1 - Experimental |
| |
| Specify the file name of the heap profile generated by `--heap-prof`. |
| |
| ### `--icu-data-dir=file` |
| <!-- YAML |
| added: v0.11.15 |
| --> |
| |
| Specify ICU data load path. (Overrides `NODE_ICU_DATA`.) |
| |
| ### `--input-type=type` |
| <!-- YAML |
| added: v12.0.0 |
| --> |
| |
| This configures Node.js to interpret string input as CommonJS or as an ES |
| module. String input is input via `--eval`, `--print`, or `STDIN`. |
| |
| Valid values are `"commonjs"` and `"module"`. The default is `"commonjs"`. |
| |
| ### `--inspect-brk[=[host:]port]` |
| <!-- YAML |
| added: v7.6.0 |
| --> |
| |
| Activate inspector on `host:port` and break at start of user script. |
| Default `host:port` is `127.0.0.1:9229`. |
| |
| ### `--inspect-port=[host:]port` |
| <!-- YAML |
| added: v7.6.0 |
| --> |
| |
| Set the `host:port` to be used when the inspector is activated. |
| Useful when activating the inspector by sending the `SIGUSR1` signal. |
| |
| Default host is `127.0.0.1`. |
| |
| See the [security warning](#inspector_security) below regarding the `host` |
| parameter usage. |
| |
| ### `--inspect[=[host:]port]` |
| <!-- YAML |
| added: v6.3.0 |
| --> |
| |
| Activate inspector on `host:port`. Default is `127.0.0.1:9229`. |
| |
| V8 inspector integration allows tools such as Chrome DevTools and IDEs to debug |
| and profile Node.js instances. The tools attach to Node.js instances via a |
| tcp port and communicate using the [Chrome DevTools Protocol][]. |
| |
| <a id="inspector_security"></a> |
| #### Warning: binding inspector to a public IP:port combination is insecure |
| |
| Binding the inspector to a public IP (including `0.0.0.0`) with an open port is |
| insecure, as it allows external hosts to connect to the inspector and perform |
| a [remote code execution][] attack. |
| |
| If specifying a host, make sure that either: |
| |
| * The host is not accessible from public networks. |
| * A firewall disallows unwanted connections on the port. |
| |
| **More specifically, `--inspect=0.0.0.0` is insecure if the port (`9229` by |
| default) is not firewall-protected.** |
| |
| See the [debugging security implications][] section for more information. |
| |
| ### `--inspect-publish-uid=stderr,http` |
| |
| Specify ways of the inspector web socket url exposure. |
| |
| By default inspector websocket url is available in stderr and under `/json/list` |
| endpoint on `http://host:port/json/list`. |
| |
| ### `--experimental-loader=module` |
| <!-- YAML |
| added: v9.0.0 |
| --> |
| |
| Specify the `module` of a custom [experimental ECMAScript Module loader][]. |
| `module` may be either a path to a file, or an ECMAScript Module name. |
| |
| ### `--insecure-http-parser` |
| <!-- YAML |
| added: v13.4.0 |
| --> |
| |
| Use an insecure HTTP parser that accepts invalid HTTP headers. This may allow |
| interoperability with non-conformant HTTP implementations. It may also allow |
| request smuggling and other HTTP attacks that rely on invalid headers being |
| accepted. Avoid using this option. |
| |
| ### `--max-http-header-size=size` |
| <!-- YAML |
| added: v11.6.0 |
| --> |
| |
| Specify the maximum size, in bytes, of HTTP headers. Defaults to 8KB. |
| |
| ### `--napi-modules` |
| <!-- YAML |
| added: v7.10.0 |
| --> |
| |
| This option is a no-op. It is kept for compatibility. |
| |
| ### `--no-deprecation` |
| <!-- YAML |
| added: v0.8.0 |
| --> |
| |
| Silence deprecation warnings. |
| |
| ### `--no-force-async-hooks-checks` |
| <!-- YAML |
| added: v9.0.0 |
| --> |
| |
| Disables runtime checks for `async_hooks`. These will still be enabled |
| dynamically when `async_hooks` is enabled. |
| |
| ### `--no-warnings` |
| <!-- YAML |
| added: v6.0.0 |
| --> |
| |
| Silence all process warnings (including deprecations). |
| |
| ### `--force-context-aware` |
| <!-- YAML |
| added: v12.12.0 |
| --> |
| |
| Disable loading native addons that are not [context-aware][]. |
| |
| ### `--openssl-config=file` |
| <!-- YAML |
| added: v6.9.0 |
| --> |
| |
| Load an OpenSSL configuration file on startup. Among other uses, this can be |
| used to enable FIPS-compliant crypto if Node.js is built with |
| `./configure --openssl-fips`. |
| |
| ### `--pending-deprecation` |
| <!-- YAML |
| added: v8.0.0 |
| --> |
| |
| Emit pending deprecation warnings. |
| |
| Pending deprecations are generally identical to a runtime deprecation with the |
| notable exception that they are turned *off* by default and will not be emitted |
| unless either the `--pending-deprecation` command line flag, or the |
| `NODE_PENDING_DEPRECATION=1` environment variable, is set. Pending deprecations |
| are used to provide a kind of selective "early warning" mechanism that |
| developers may leverage to detect deprecated API usage. |
| |
| ### `--policy-integrity=sri` |
| <!-- YAML |
| added: v12.7.0 |
| --> |
| |
| > Stability: 1 - Experimental |
| |
| Instructs Node.js to error prior to running any code if the policy does not have |
| the specified integrity. It expects a [Subresource Integrity][] string as a |
| parameter. |
| |
| ### `--preserve-symlinks` |
| <!-- YAML |
| added: v6.3.0 |
| --> |
| |
| Instructs the module loader to preserve symbolic links when resolving and |
| caching modules. |
| |
| By default, when Node.js loads a module from a path that is symbolically linked |
| to a different on-disk location, Node.js will dereference the link and use the |
| actual on-disk "real path" of the module as both an identifier and as a root |
| path to locate other dependency modules. In most cases, this default behavior |
| is acceptable. However, when using symbolically linked peer dependencies, as |
| illustrated in the example below, the default behavior causes an exception to |
| be thrown if `moduleA` attempts to require `moduleB` as a peer dependency: |
| |
| ```text |
| {appDir} |
| ├── app |
| │ ├── index.js |
| │ └── node_modules |
| │ ├── moduleA -> {appDir}/moduleA |
| │ └── moduleB |
| │ ├── index.js |
| │ └── package.json |
| └── moduleA |
| ├── index.js |
| └── package.json |
| ``` |
| |
| The `--preserve-symlinks` command line flag instructs Node.js to use the |
| symlink path for modules as opposed to the real path, allowing symbolically |
| linked peer dependencies to be found. |
| |
| Note, however, that using `--preserve-symlinks` can have other side effects. |
| Specifically, symbolically linked *native* modules can fail to load if those |
| are linked from more than one location in the dependency tree (Node.js would |
| see those as two separate modules and would attempt to load the module multiple |
| times, causing an exception to be thrown). |
| |
| The `--preserve-symlinks` flag does not apply to the main module, which allows |
| `node --preserve-symlinks node_module/.bin/<foo>` to work. To apply the same |
| behavior for the main module, also use `--preserve-symlinks-main`. |
| |
| ### `--preserve-symlinks-main` |
| <!-- YAML |
| added: v10.2.0 |
| --> |
| |
| Instructs the module loader to preserve symbolic links when resolving and |
| caching the main module (`require.main`). |
| |
| This flag exists so that the main module can be opted-in to the same behavior |
| that `--preserve-symlinks` gives to all other imports; they are separate flags, |
| however, for backward compatibility with older Node.js versions. |
| |
| `--preserve-symlinks-main` does not imply `--preserve-symlinks`; it |
| is expected that `--preserve-symlinks-main` will be used in addition to |
| `--preserve-symlinks` when it is not desirable to follow symlinks before |
| resolving relative paths. |
| |
| See `--preserve-symlinks` for more information. |
| |
| ### `--prof` |
| <!-- YAML |
| added: v2.0.0 |
| --> |
| |
| Generate V8 profiler output. |
| |
| ### `--prof-process` |
| <!-- YAML |
| added: v5.2.0 |
| --> |
| |
| Process V8 profiler output generated using the V8 option `--prof`. |
| |
| ### `--redirect-warnings=file` |
| <!-- YAML |
| added: v8.0.0 |
| --> |
| |
| Write process warnings to the given file instead of printing to stderr. The |
| file will be created if it does not exist, and will be appended to if it does. |
| If an error occurs while attempting to write the warning to the file, the |
| warning will be written to stderr instead. |
| |
| ### `--report-directory=directory` |
| <!-- YAML |
| added: v11.8.0 |
| changes: |
| - version: v12.0.0 |
| pr-url: https://github.com/nodejs/node/pull/27312 |
| description: Changed from `--diagnostic-report-directory` to |
| `--report-directory` |
| --> |
| |
| Location at which the report will be generated. |
| |
| ### `--report-filename=filename` |
| <!-- YAML |
| added: v11.8.0 |
| changes: |
| - version: v12.0.0 |
| pr-url: https://github.com/nodejs/node/pull/27312 |
| description: changed from `--diagnostic-report-filename` to |
| `--report-filename` |
| --> |
| |
| Name of the file to which the report will be written. |
| |
| ### `--report-on-fatalerror` |
| <!-- YAML |
| added: v11.8.0 |
| changes: |
| - version: v12.0.0 |
| pr-url: https://github.com/nodejs/node/pull/27312 |
| description: changed from `--diagnostic-report-on-fatalerror` to |
| `--report-on-fatalerror` |
| --> |
| |
| Enables the report to be triggered on fatal errors (internal errors within |
| the Node.js runtime such as out of memory) that lead to termination of the |
| application, if `--experimental-report` is enabled. Useful to inspect various |
| diagnostic data elements such as heap, stack, event loop state, resource |
| consumption etc. to reason about the fatal error. |
| |
| ### `--report-on-signal` |
| <!-- YAML |
| added: v11.8.0 |
| changes: |
| - version: v12.0.0 |
| pr-url: https://github.com/nodejs/node/pull/27312 |
| description: changed from `--diagnostic-report-on-signal` to |
| `--report-on-signal` |
| --> |
| |
| Enables report to be generated upon receiving the specified (or predefined) |
| signal to the running Node.js process, if `--experimental-report` is enabled. |
| The signal to trigger the report is specified through `--report-signal`. |
| |
| ### `--report-signal=signal` |
| <!-- YAML |
| added: v11.8.0 |
| changes: |
| - version: v12.0.0 |
| pr-url: https://github.com/nodejs/node/pull/27312 |
| description: changed from `--diagnostic-report-signal` to |
| `--report-signal` |
| --> |
| |
| Sets or resets the signal for report generation (not supported on Windows). |
| Default signal is `SIGUSR2`. |
| |
| ### `--report-uncaught-exception` |
| <!-- YAML |
| added: v11.8.0 |
| changes: |
| - version: v12.0.0 |
| pr-url: https://github.com/nodejs/node/pull/27312 |
| description: changed from `--diagnostic-report-uncaught-exception` to |
| `--report-uncaught-exception` |
| --> |
| |
| Enables report to be generated on un-caught exceptions, if |
| `--experimental-report` is enabled. Useful when inspecting JavaScript stack in |
| conjunction with native stack and other runtime environment data. |
| |
| ### `--throw-deprecation` |
| <!-- YAML |
| added: v0.11.14 |
| --> |
| |
| Throw errors for deprecations. |
| |
| ### `--title=title` |
| <!-- YAML |
| added: v10.7.0 |
| --> |
| |
| Set `process.title` on startup. |
| |
| ### `--tls-cipher-list=list` |
| <!-- YAML |
| added: v4.0.0 |
| --> |
| |
| Specify an alternative default TLS cipher list. Requires Node.js to be built |
| with crypto support (default). |
| |
| ### `--tls-keylog=file` |
| <!-- YAML |
| added: v13.2.0 |
| --> |
| |
| Log TLS key material to a file. The key material is in NSS `SSLKEYLOGFILE` |
| format and can be used by software (such as Wireshark) to decrypt the TLS |
| traffic. |
| |
| ### `--tls-max-v1.2` |
| <!-- YAML |
| added: v12.0.0 |
| --> |
| |
| Set [`tls.DEFAULT_MAX_VERSION`][] to 'TLSv1.2'. Use to disable support for |
| TLSv1.3. |
| |
| ### `--tls-max-v1.3` |
| <!-- YAML |
| added: v12.0.0 |
| --> |
| |
| Set default [`tls.DEFAULT_MAX_VERSION`][] to 'TLSv1.3'. Use to enable support |
| for TLSv1.3. |
| |
| ### `--tls-min-v1.0` |
| <!-- YAML |
| added: v12.0.0 |
| --> |
| |
| Set default [`tls.DEFAULT_MIN_VERSION`][] to 'TLSv1'. Use for compatibility with |
| old TLS clients or servers. |
| |
| ### `--tls-min-v1.1` |
| <!-- YAML |
| added: v12.0.0 |
| --> |
| |
| Set default [`tls.DEFAULT_MIN_VERSION`][] to 'TLSv1.1'. Use for compatibility |
| with old TLS clients or servers. |
| |
| ### `--tls-min-v1.2` |
| <!-- YAML |
| added: v12.2.0 |
| --> |
| |
| Set default [`tls.DEFAULT_MIN_VERSION`][] to 'TLSv1.2'. This is the default for |
| 12.x and later, but the option is supported for compatibility with older Node.js |
| versions. |
| |
| ### `--tls-min-v1.3` |
| <!-- YAML |
| added: v12.0.0 |
| --> |
| |
| Set default [`tls.DEFAULT_MIN_VERSION`][] to 'TLSv1.3'. Use to disable support |
| for TLSv1.2, which is not as secure as TLSv1.3. |
| |
| ### `--trace-deprecation` |
| <!-- YAML |
| added: v0.8.0 |
| --> |
| |
| Print stack traces for deprecations. |
| |
| ### `--trace-event-categories` |
| <!-- YAML |
| added: v7.7.0 |
| --> |
| |
| A comma separated list of categories that should be traced when trace event |
| tracing is enabled using `--trace-events-enabled`. |
| |
| ### `--trace-event-file-pattern` |
| <!-- YAML |
| added: v9.8.0 |
| --> |
| |
| Template string specifying the filepath for the trace event data, it |
| supports `${rotation}` and `${pid}`. |
| |
| ### `--trace-events-enabled` |
| <!-- YAML |
| added: v7.7.0 |
| --> |
| |
| Enables the collection of trace event tracing information. |
| |
| ### `--trace-exit` |
| <!-- YAML |
| added: v13.5.0 |
| --> |
| |
| Prints a stack trace whenever an environment is exited proactively, |
| i.e. invoking `process.exit()`. |
| |
| ### `--trace-sigint` |
| <!-- YAML |
| added: v13.9.0 |
| --> |
| |
| Prints a stack trace on SIGINT. |
| |
| ### `--trace-sync-io` |
| <!-- YAML |
| added: v2.1.0 |
| --> |
| |
| Prints a stack trace whenever synchronous I/O is detected after the first turn |
| of the event loop. |
| |
| ### `--trace-tls` |
| <!-- YAML |
| added: v12.2.0 |
| --> |
| |
| Prints TLS packet trace information to `stderr`. This can be used to debug TLS |
| connection problems. |
| |
| ### `--trace-uncaught` |
| <!-- YAML |
| added: v13.1.0 |
| --> |
| |
| Print stack traces for uncaught exceptions; usually, the stack trace associated |
| with the creation of an `Error` is printed, whereas this makes Node.js also |
| print the stack trace associated with throwing the value (which does not need |
| to be an `Error` instance). |
| |
| Enabling this option may affect garbage collection behavior negatively. |
| |
| ### `--trace-warnings` |
| <!-- YAML |
| added: v6.0.0 |
| --> |
| |
| Print stack traces for process warnings (including deprecations). |
| |
| ### `--track-heap-objects` |
| <!-- YAML |
| added: v2.4.0 |
| --> |
| |
| Track heap object allocations for heap snapshots. |
| |
| ### `--unhandled-rejections=mode` |
| <!-- YAML |
| added: v12.0.0 |
| --> |
| |
| By default all unhandled rejections trigger a warning plus a deprecation warning |
| for the very first unhandled rejection in case no [`unhandledRejection`][] hook |
| is used. |
| |
| Using this flag allows to change what should happen when an unhandled rejection |
| occurs. One of three modes can be chosen: |
| |
| * `strict`: Raise the unhandled rejection as an uncaught exception. |
| * `warn`: Always trigger a warning, no matter if the [`unhandledRejection`][] |
| hook is set or not but do not print the deprecation warning. |
| * `none`: Silence all warnings. |
| |
| ### `--use-bundled-ca`, `--use-openssl-ca` |
| <!-- YAML |
| added: v6.11.0 |
| --> |
| |
| Use bundled Mozilla CA store as supplied by current Node.js version |
| or use OpenSSL's default CA store. The default store is selectable |
| at build-time. |
| |
| The bundled CA store, as supplied by Node.js, is a snapshot of Mozilla CA store |
| that is fixed at release time. It is identical on all supported platforms. |
| |
| Using OpenSSL store allows for external modifications of the store. For most |
| Linux and BSD distributions, this store is maintained by the distribution |
| maintainers and system administrators. OpenSSL CA store location is dependent on |
| configuration of the OpenSSL library but this can be altered at runtime using |
| environment variables. |
| |
| See `SSL_CERT_DIR` and `SSL_CERT_FILE`. |
| |
| ### `--use-largepages=mode` |
| <!-- YAML |
| added: v13.6.0 |
| --> |
| |
| Re-map the Node.js static code to large memory pages at startup. If supported on |
| the target system, this will cause the Node.js static code to be moved onto 2 |
| MiB pages instead of 4 KiB pages. |
| |
| The following values are valid for `mode`: |
| * `off`: No mapping will be attempted. This is the default. |
| * `on`: If supported by the OS, mapping will be attempted. Failure to map will |
| be ignored and a message will be printed to standard error. |
| * `silent`: If supported by the OS, mapping will be attempted. Failure to map |
| will be ignored and will not be reported. |
| |
| ### `--v8-options` |
| <!-- YAML |
| added: v0.1.3 |
| --> |
| |
| Print V8 command line options. |
| |
| ### `--v8-pool-size=num` |
| <!-- YAML |
| added: v5.10.0 |
| --> |
| |
| Set V8's thread pool size which will be used to allocate background jobs. |
| |
| If set to `0` then V8 will choose an appropriate size of the thread pool based |
| on the number of online processors. |
| |
| If the value provided is larger than V8's maximum, then the largest value |
| will be chosen. |
| |
| ### `--zero-fill-buffers` |
| <!-- YAML |
| added: v6.0.0 |
| --> |
| |
| Automatically zero-fills all newly allocated [`Buffer`][] and [`SlowBuffer`][] |
| instances. |
| |
| ### `-c`, `--check` |
| <!-- YAML |
| added: |
| - v5.0.0 |
| - v4.2.0 |
| changes: |
| - version: v10.0.0 |
| pr-url: https://github.com/nodejs/node/pull/19600 |
| description: The `--require` option is now supported when checking a file. |
| --> |
| |
| Syntax check the script without executing. |
| |
| ### `-e`, `--eval "script"` |
| <!-- YAML |
| added: v0.5.2 |
| changes: |
| - version: v5.11.0 |
| pr-url: https://github.com/nodejs/node/pull/5348 |
| description: Built-in libraries are now available as predefined variables. |
| --> |
| |
| Evaluate the following argument as JavaScript. The modules which are |
| predefined in the REPL can also be used in `script`. |
| |
| On Windows, using `cmd.exe` a single quote will not work correctly because it |
| only recognizes double `"` for quoting. In Powershell or Git bash, both `'` |
| and `"` are usable. |
| |
| ### `-h`, `--help` |
| <!-- YAML |
| added: v0.1.3 |
| --> |
| |
| Print node command line options. |
| The output of this option is less detailed than this document. |
| |
| ### `-i`, `--interactive` |
| <!-- YAML |
| added: v0.7.7 |
| --> |
| |
| Opens the REPL even if stdin does not appear to be a terminal. |
| |
| ### `-p`, `--print "script"` |
| <!-- YAML |
| added: v0.6.4 |
| changes: |
| - version: v5.11.0 |
| pr-url: https://github.com/nodejs/node/pull/5348 |
| description: Built-in libraries are now available as predefined variables. |
| --> |
| |
| Identical to `-e` but prints the result. |
| |
| ### `-r`, `--require module` |
| <!-- YAML |
| added: v1.6.0 |
| --> |
| |
| Preload the specified module at startup. |
| |
| Follows `require()`'s module resolution |
| rules. `module` may be either a path to a file, or a node module name. |
| |
| ### `-v`, `--version` |
| <!-- YAML |
| added: v0.1.3 |
| --> |
| |
| Print node's version. |
| |
| ## Environment Variables |
| |
| ### `NODE_DEBUG=module[,…]` |
| <!-- YAML |
| added: v0.1.32 |
| --> |
| |
| `','`-separated list of core modules that should print debug information. |
| |
| ### `NODE_DEBUG_NATIVE=module[,…]` |
| |
| `','`-separated list of core C++ modules that should print debug information. |
| |
| ### `NODE_DISABLE_COLORS=1` |
| <!-- YAML |
| added: v0.3.0 |
| --> |
| |
| When set, colors will not be used in the REPL. |
| |
| ### `NODE_EXTRA_CA_CERTS=file` |
| <!-- YAML |
| added: v7.3.0 |
| --> |
| |
| When set, the well known "root" CAs (like VeriSign) will be extended with the |
| extra certificates in `file`. The file should consist of one or more trusted |
| certificates in PEM format. A message will be emitted (once) with |
| [`process.emitWarning()`][emit_warning] if the file is missing or |
| malformed, but any errors are otherwise ignored. |
| |
| Neither the well known nor extra certificates are used when the `ca` |
| options property is explicitly specified for a TLS or HTTPS client or server. |
| |
| This environment variable is ignored when `node` runs as setuid root or |
| has Linux file capabilities set. |
| |
| ### `NODE_ICU_DATA=file` |
| <!-- YAML |
| added: v0.11.15 |
| --> |
| |
| Data path for ICU (`Intl` object) data. Will extend linked-in data when compiled |
| with small-icu support. |
| |
| ### `NODE_NO_WARNINGS=1` |
| <!-- YAML |
| added: v6.11.0 |
| --> |
| |
| When set to `1`, process warnings are silenced. |
| |
| ### `NODE_OPTIONS=options...` |
| <!-- YAML |
| added: v8.0.0 |
| --> |
| |
| A space-separated list of command line options. `options...` are interpreted |
| before command line options, so command line options will override or |
| compound after anything in `options...`. Node.js will exit with an error if |
| an option that is not allowed in the environment is used, such as `-p` or a |
| script file. |
| |
| In case an option value happens to contain a space (for example a path listed |
| in `--require`), it must be escaped using double quotes. For example: |
| |
| ```bash |
| NODE_OPTIONS='--require "./my path/file.js"' |
| ``` |
| |
| A singleton flag passed as a command line option will override the same flag |
| passed into `NODE_OPTIONS`: |
| |
| ```bash |
| # The inspector will be available on port 5555 |
| NODE_OPTIONS='--inspect=localhost:4444' node --inspect=localhost:5555 |
| ``` |
| |
| A flag that can be passed multiple times will be treated as if its |
| `NODE_OPTIONS` instances were passed first, and then its command line |
| instances afterwards: |
| |
| ```bash |
| NODE_OPTIONS='--require "./a.js"' node --require "./b.js" |
| # is equivalent to: |
| node --require "./a.js" --require "./b.js" |
| ``` |
| |
| Node.js options that are allowed are: |
| <!-- node-options-node start --> |
| * `--enable-fips` |
| * `--enable-source-maps` |
| * `--experimental-import-meta-resolve` |
| * `--experimental-json-modules` |
| * `--experimental-loader` |
| * `--experimental-modules` |
| * `--experimental-policy` |
| * `--experimental-repl-await` |
| * `--experimental-report` |
| * `--experimental-specifier-resolution` |
| * `--experimental-vm-modules` |
| * `--experimental-wasi-unstable-preview1` |
| * `--experimental-wasm-modules` |
| * `--force-context-aware` |
| * `--force-fips` |
| * `--frozen-intrinsics` |
| * `--heapsnapshot-signal` |
| * `--http-parser` |
| * `--icu-data-dir` |
| * `--input-type` |
| * `--insecure-http-parser` |
| * `--inspect-brk` |
| * `--inspect-port`, `--debug-port` |
| * `--inspect-publish-uid` |
| * `--inspect` |
| * `--max-http-header-size` |
| * `--napi-modules` |
| * `--no-deprecation` |
| * `--no-force-async-hooks-checks` |
| * `--no-warnings` |
| * `--openssl-config` |
| * `--pending-deprecation` |
| * `--policy-integrity` |
| * `--preserve-symlinks-main` |
| * `--preserve-symlinks` |
| * `--prof-process` |
| * `--redirect-warnings` |
| * `--report-directory` |
| * `--report-filename` |
| * `--report-on-fatalerror` |
| * `--report-on-signal` |
| * `--report-signal` |
| * `--report-uncaught-exception` |
| * `--require`, `-r` |
| * `--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-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` |
| * `--zero-fill-buffers` |
| <!-- node-options-node end --> |
| |
| V8 options that are allowed are: |
| <!-- node-options-v8 start --> |
| * `--abort-on-uncaught-exception` |
| * `--disallow-code-generation-from-strings` |
| * `--interpreted-frames-native-stack` |
| * `--max-old-space-size` |
| * `--perf-basic-prof-only-functions` |
| * `--perf-basic-prof` |
| * `--perf-prof-unwinding-info` |
| * `--perf-prof` |
| * `--stack-trace-limit` |
| <!-- node-options-v8 end --> |
| |
| `--perf-basic-prof-only-functions`, `--perf-basic-prof`, |
| `--perf-prof-unwinding-info`, and `--perf-prof` are only available on Linux. |
| |
| ### `NODE_PATH=path[:…]` |
| <!-- YAML |
| added: v0.1.32 |
| --> |
| |
| `':'`-separated list of directories prefixed to the module search path. |
| |
| On Windows, this is a `';'`-separated list instead. |
| |
| ### `NODE_PENDING_DEPRECATION=1` |
| <!-- YAML |
| added: v8.0.0 |
| --> |
| |
| When set to `1`, emit pending deprecation warnings. |
| |
| Pending deprecations are generally identical to a runtime deprecation with the |
| notable exception that they are turned *off* by default and will not be emitted |
| unless either the `--pending-deprecation` command line flag, or the |
| `NODE_PENDING_DEPRECATION=1` environment variable, is set. Pending deprecations |
| are used to provide a kind of selective "early warning" mechanism that |
| developers may leverage to detect deprecated API usage. |
| |
| ### `NODE_PENDING_PIPE_INSTANCES=instances` |
| |
| Set the number of pending pipe instance handles when the pipe server is waiting |
| for connections. This setting applies to Windows only. |
| |
| ### `NODE_PRESERVE_SYMLINKS=1` |
| <!-- YAML |
| added: v7.1.0 |
| --> |
| |
| When set to `1`, instructs the module loader to preserve symbolic links when |
| resolving and caching modules. |
| |
| ### `NODE_REDIRECT_WARNINGS=file` |
| <!-- YAML |
| added: v8.0.0 |
| --> |
| |
| When set, process warnings will be emitted to the given file instead of |
| printing to stderr. The file will be created if it does not exist, and will be |
| appended to if it does. If an error occurs while attempting to write the |
| warning to the file, the warning will be written to stderr instead. This is |
| equivalent to using the `--redirect-warnings=file` command-line flag. |
| |
| ### `NODE_REPL_HISTORY=file` |
| <!-- YAML |
| added: v3.0.0 |
| --> |
| |
| Path to the file used to store the persistent REPL history. The default path is |
| `~/.node_repl_history`, which is overridden by this variable. Setting the value |
| to an empty string (`''` or `' '`) disables persistent REPL history. |
| |
| ### `NODE_REPL_EXTERNAL_MODULE=file` |
| <!-- YAML |
| added: v13.0.0 |
| --> |
| |
| Path to a Node.js module which will be loaded in place of the built-in REPL. |
| Overriding this value to an empty string (`''`) will use the built-in REPL. |
| |
| ### `NODE_TLS_REJECT_UNAUTHORIZED=value` |
| |
| If `value` equals `'0'`, certificate validation is disabled for TLS connections. |
| This makes TLS, and HTTPS by extension, insecure. The use of this environment |
| variable is strongly discouraged. |
| |
| ### `NODE_V8_COVERAGE=dir` |
| |
| When set, Node.js will begin outputting [V8 JavaScript code coverage][] and |
| [Source Map][] data to the directory provided as an argument (coverage |
| information is written as JSON to files with a `coverage` prefix). |
| |
| `NODE_V8_COVERAGE` will automatically propagate to subprocesses, making it |
| easier to instrument applications that call the `child_process.spawn()` family |
| of functions. `NODE_V8_COVERAGE` can be set to an empty string, to prevent |
| propagation. |
| |
| #### Coverage Output |
| |
| Coverage is output as an array of [ScriptCoverage][] objects on the top-level |
| key `result`: |
| |
| ```json |
| { |
| "result": [ |
| { |
| "scriptId": "67", |
| "url": "internal/tty.js", |
| "functions": [] |
| } |
| ] |
| } |
| ``` |
| |
| #### Source Map Cache |
| |
| > Stability: 1 - Experimental |
| |
| If found, Source Map data is appended to the top-level key `source-map-cache` |
| on the JSON coverage object. |
| |
| `source-map-cache` is an object with keys representing the files source maps |
| were extracted from, and values which include the raw source-map URL |
| (in the key `url`), the parsed Source Map V3 information (in the key `data`), |
| and the line lengths of the source file (in the key `lineLengths`). |
| |
| ```json |
| { |
| "result": [ |
| { |
| "scriptId": "68", |
| "url": "file:///absolute/path/to/source.js", |
| "functions": [] |
| } |
| ], |
| "source-map-cache": { |
| "file:///absolute/path/to/source.js": { |
| "url": "./path-to-map.json", |
| "data": { |
| "version": 3, |
| "sources": [ |
| "file:///absolute/path/to/original.js" |
| ], |
| "names": [ |
| "Foo", |
| "console", |
| "info" |
| ], |
| "mappings": "MAAMA,IACJC,YAAaC", |
| "sourceRoot": "./" |
| }, |
| "lineLengths": [ |
| 13, |
| 62, |
| 38, |
| 27 |
| ] |
| } |
| } |
| } |
| ``` |
| |
| ### `OPENSSL_CONF=file` |
| <!-- YAML |
| added: v6.11.0 |
| --> |
| |
| Load an OpenSSL configuration file on startup. Among other uses, this can be |
| used to enable FIPS-compliant crypto if Node.js is built with `./configure |
| --openssl-fips`. |
| |
| If the [`--openssl-config`][] command line option is used, the environment |
| variable is ignored. |
| |
| ### `SSL_CERT_DIR=dir` |
| <!-- YAML |
| added: v7.7.0 |
| --> |
| |
| If `--use-openssl-ca` is enabled, this overrides and sets OpenSSL's directory |
| containing trusted certificates. |
| |
| Be aware that unless the child environment is explicitly set, this environment |
| variable will be inherited by any child processes, and if they use OpenSSL, it |
| may cause them to trust the same CAs as node. |
| |
| ### `SSL_CERT_FILE=file` |
| <!-- YAML |
| added: v7.7.0 |
| --> |
| |
| If `--use-openssl-ca` is enabled, this overrides and sets OpenSSL's file |
| containing trusted certificates. |
| |
| Be aware that unless the child environment is explicitly set, this environment |
| variable will be inherited by any child processes, and if they use OpenSSL, it |
| may cause them to trust the same CAs as node. |
| |
| ### `UV_THREADPOOL_SIZE=size` |
| |
| Set the number of threads used in libuv's threadpool to `size` threads. |
| |
| Asynchronous system APIs are used by Node.js whenever possible, but where they |
| do not exist, libuv's threadpool is used to create asynchronous node APIs based |
| on synchronous system APIs. Node.js APIs that use the threadpool are: |
| |
| * all `fs` APIs, other than the file watcher APIs and those that are explicitly |
| synchronous |
| * asynchronous crypto APIs such as `crypto.pbkdf2()`, `crypto.scrypt()`, |
| `crypto.randomBytes()`, `crypto.randomFill()`, `crypto.generateKeyPair()` |
| * `dns.lookup()` |
| * all `zlib` APIs, other than those that are explicitly synchronous |
| |
| Because libuv's threadpool has a fixed size, it means that if for whatever |
| reason any of these APIs takes a long time, other (seemingly unrelated) APIs |
| that run in libuv's threadpool will experience degraded performance. In order to |
| mitigate this issue, one potential solution is to increase the size of libuv's |
| threadpool by setting the `'UV_THREADPOOL_SIZE'` environment variable to a value |
| greater than `4` (its current default value). For more information, see the |
| [libuv threadpool documentation][]. |
| |
| [`--openssl-config`]: #cli_openssl_config_file |
| [`Buffer`]: buffer.html#buffer_class_buffer |
| [`SlowBuffer`]: buffer.html#buffer_class_slowbuffer |
| [`process.setUncaughtExceptionCaptureCallback()`]: process.html#process_process_setuncaughtexceptioncapturecallback_fn |
| [`tls.DEFAULT_MAX_VERSION`]: tls.html#tls_tls_default_max_version |
| [`tls.DEFAULT_MIN_VERSION`]: tls.html#tls_tls_default_min_version |
| [`unhandledRejection`]: process.html#process_event_unhandledrejection |
| [Chrome DevTools Protocol]: https://chromedevtools.github.io/devtools-protocol/ |
| [REPL]: repl.html |
| [ScriptCoverage]: https://chromedevtools.github.io/devtools-protocol/tot/Profiler#type-ScriptCoverage |
| [Source Map]: https://sourcemaps.info/spec.html |
| [Subresource Integrity]: https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity |
| [V8 JavaScript code coverage]: https://v8project.blogspot.com/2017/12/javascript-code-coverage.html |
| [context-aware]: addons.html#addons_context_aware_addons |
| [customizing ESM specifier resolution]: esm.html#esm_customizing_esm_specifier_resolution_algorithm |
| [debugger]: debugger.html |
| [debugging security implications]: https://nodejs.org/en/docs/guides/debugging-getting-started/#security-implications |
| [emit_warning]: process.html#process_process_emitwarning_warning_type_code_ctor |
| [experimental ECMAScript Module loader]: esm.html#esm_experimental_loaders |
| [libuv threadpool documentation]: http://docs.libuv.org/en/latest/threadpool.html |
| [remote code execution]: https://www.owasp.org/index.php/Code_Injection |