mirror of
https://github.com/nodejs/node.git
synced 2024-11-29 15:06:33 +01:00
9e69d97c60
This work is modeled on #30094 which allowed `--disallow-code-generation-from-strings` in `NODE_OPTIONS`. The `--jitless` v8 option has been supported since 12.0.0. As a v8 option, node automatically picks it up, but there have been a few issues that were resolved by simply telling users about the option: #26758, This PR: - allows `--jitless` in `NODE_OPTIONS` - documents `--jitless` - moves `--experimental-loader=module` to locally restore alphabetical order in option documentation Refs: https://github.com/nodejs/node/pull/30094 Refs: https://github.com/nodejs/node/issues/26758 Refs: https://github.com/nodejs/node/issues/28800 PR-URL: https://github.com/nodejs/node/pull/32100 Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Sam Roberts <vieuxtech@gmail.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Shelley Vohr <codebytere@gmail.com> Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
1410 lines
37 KiB
Markdown
1410 lines
37 KiB
Markdown
# 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-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.
|
|
|
|
### `--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`.
|
|
|
|
### `--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.
|
|
|
|
### `--jitless`
|
|
<!-- YAML
|
|
added: v12.0.0
|
|
-->
|
|
|
|
Disable [runtime allocation of executable memory][jitless]. This may be
|
|
required on some platforms for security reasons. It can also reduce attack
|
|
surface on other platforms, but the performance impact may be severe.
|
|
|
|
This flag is inherited from V8 and is subject to change upstream. It may
|
|
disappear in a non-semver-major release.
|
|
|
|
### `--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`
|
|
* `--jitless`
|
|
* `--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
|
|
[jitless]: https://v8.dev/blog/jitless
|
|
[libuv threadpool documentation]: http://docs.libuv.org/en/latest/threadpool.html
|
|
[remote code execution]: https://www.owasp.org/index.php/Code_Injection
|