- 选项
- —max-http-header-size=size
- —throw-deprecation
- —no-deprecation
- —no-warnings
- —preserve-symlinks
- —preserve-symlinks-main
- —redirect-warnings=file
- —report-compact
- —report-dir=directory, report-directory=directory
- —report-filename=filename
- —report-on-fatalerror
- —report-on-signal
- —report-uncaught-exception
- —title=title
- —trace-events-enabled
- —trace-exit
- —trace-uncaught
- -v, —version
- -h, —help
- —v8-options
- —v8-pool-size=num
- -c, —check
- -e, —eval “script”
- -p, —print “script”
- -i, —interactive
- -r, —require module
- 环境变量
Node.js 具有各种各样的命令行选项。 这些选项暴露了内置调试、多种执行脚本的方式、以及其他有用的运行时选项。
要在终端中将本文档作为手册页查看,请在 PowerShell 运行 man node
。
node [options] [V8 options] [script.js | -e “script” | -] [—] [arguments]
node inspect [script.js | -e “script” |
不带参数执行将启动交互式解释器 (REPL)。
所有选项,包括 V8 选项,都允许用破折号 (-) 或下划线 (_) 分隔单词。 例如,—pending-deprecation 等价于 —pending_deprecation。
如果接受单个值的选项(例如 —max-http-header-size)被多次传入,则使用最后传入的值。 来自命令行的选项优先于通过 NODE_OPTIONS 环境变量传入的选项。
选项
—prof
—cpu-prof
新增于: v12.0.0
启动时开始 V8 CPU 分析器,并且在退出前将 CPU 分析文件写入磁盘。
如果未指定—cpu-prof-dir,则生成的分析文件放在当前工作目录中。
如果未指定 —cpu-prof-name,则生成的分析文件名为 CPU.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.cpuprofile。
—cpu-prof-dir
指定放置 —cpu-prof 生成的 CPU 分析文件的目录
默认值由 —diagnostic-dir 命令行选项控制。
—cpu-prof-interval
为 —cpu-prof 生成的 CPU 分析文件指定以微秒为单位的采样间隔。 默认为 1000 微秒。
—cpu-prof-name
指定 —cpu-prof 生成的 CPU 分析文件的文件名。
—heap-prof
新增于: v12.4.0
在启动时开始 V8 堆分析器,并在退出前将堆分析器写入磁盘。
如果未指定—heap-prof-dir,则生成的分析文件放在当前工作目录中。
如果未指定 —heap-prof-name,则生成的分析文件名为 Heap.${yyyymmdd}.${hhmmss}.${pid}.${tid}.${seq}.heapprofile。
—heap-prof-dir
指定 —heap-prof 生成的堆分析文件将被放置的目录。
默认值由 —diagnostic-dir 命令行选项控制。
—heap-prof-interval
指定 —heap-prof 生成的堆分析文件的平均采样间隔(以字节为单位)。 默认为 512 * 1024 字节
—heap-prof-name
指定 —heap-prof 生成的堆分析文件的文件名。
—enable-source-maps
启用 Source Map v3 对堆栈跟踪的支持。
当使用诸如 TypeScript 之类的转译器时,应用程序抛出的堆栈跟踪会引用转译后的代码,而不是原始源位置。 —enable-source-maps 启用源映射缓存并尽最大努力报告相对于原始源文件的堆栈跟踪。
覆盖 Error.prepareStackTrace 可防止 —enable-source-maps 修改堆栈跟踪。
—inspect[=[host:]port]
在 host:port 上激活检查器。 默认为 127.0.0.1:9229。
V8 检查器集成允许 Chrome 开发者工具和 IDE 等工具调试和分析 Node.js 实例。 该工具通过 tcp 端口连接到 Node.js 实例,并使用 Chrome 开发者工具协议进行通信。
注意:绑定检查器到公共的“IP:端口”组合是不安全的
将检查器绑定到具有开放端口的公共 IP(包括 0.0.0.0)是不安全的,因为它允许外部主机连接到检查器并执行远程代码执行攻击。
如果指定主机,请确保:
- 无法从公共网络访问该主机。
- 防火墙不允许端口上不需要的连接。 更具体地说,如果端口(默认情况下为 9229)不受防火墙保护,则 —inspect=0.0.0.0 是不安全的。
有关详细信息,请参阅调试安全隐患章节。
—max-http-header-size=size
版本 | 变更 |
---|---|
v13.13.0 | 将 HTTP 标头的最大默认大小从 8 KB 更改为 16 KB |
指定 HTTP 标头的最大大小(以字节为单位)。 默认为 16 KB。
—throw-deprecation
—no-deprecation
—no-warnings
静默所有进程警告(包括弃用的)。
—preserve-symlinks
指示模块加载器在解析和缓存模块时保留符号链接。
默认情况下,当 Node.js 从符号链接到不同磁盘位置的路径加载模块时,Node.js 将取消引用该链接并使用模块的实际磁盘“真实路径”作为既是标识符又是定位其他依赖模块的根路径。 在大多数情况下,这种默认行为是可以接受的。 但是,当使用符号链接的对等依赖项时,如下例所示,如果 moduleA 尝试要求 moduleB 作为对等依赖项,则默认行为会引发异常:
—preserve-symlinks 命令行标志指示 Node.js 使用模块的符号链接路径而不是实际路径,从而允许找到符号链接的对等依赖项。
但是请注意,使用 —preserve-symlinks 会产生其他副作用。 具体来说,如果这些模块是从依赖树中的多个位置链接的,那么符号链接的原生模块可能无法加载(Node.js 会将它们视为两个单独的模块,并会尝试多次加载该模块,从而导致异常被抛出)。
—preserve-symlinks 标志不适用于允许 node —preserve-symlinks node_module/.bin/
—preserve-symlinks-main
指示模块加载器在解析和缓存主模块 (require.main) 时保留符号链接。
此标志的存在是为了让主模块可以选择加入 —preserve-symlinks 为所有其他导入提供的相同行为;但是,它们是单独的标志,以便与旧的 Node.js 版本向后兼容。
—preserve-symlinks-main 并不意味着 —preserve-symlinks;当在解析相对路径之前不希望遵循符号链接时,除了 —preserve-symlinks 之外,还使用 —preserve-symlinks-main。
—redirect-warnings=file
将进程警告写入给定文件而不是打印到标准错误。 如果文件不存在则创建,如果存在则追加。 如果在尝试将警告写入文件时发生错误,则警告将改为写入标准错误。
file 名称可以是绝对路径。 如果不是,则它将被写入的默认目录由 —diagnostic-dir 命令行选项控制。
—report-compact
以紧凑的单行 JSON 格式编写报告,与专为人类使用而设计的默认多行格式相比,日志处理系统更易于使用。
—report-dir=directory, report-directory=directory
生成报告的位置。
—report-filename=filename
将写入报告的文件的名称。
—report-on-fatalerror
使报告能够在导致应用程序终止的致命错误(Node.js 运行时中的内部错误,例如内存不足)时触发。 用于检查各种诊断数据元素,例如堆、堆栈、事件循环状态、资源消耗等 推断致命错误。
—report-on-signal
在接收到正在运行的 Node.js 进程的指定(或预定义)信号时生成报告。 触发报告的信号通过 —report-signal 指定。
—report-uncaught-exception
启用对未捕获的异常生成报告。 在结合原生堆栈和其他运行时环境数据检查 JavaScript 堆栈时很有用。
—title=title
在启动时设置 process.title。
—trace-events-enabled
启用跟踪事件跟踪信息的收集。
—trace-exit
每当主动退出环境时打印堆栈跟踪,即调用 process.exit()。
—trace-uncaught
打印未捕获异常的堆栈跟踪;通常,打印与创建 Error 相关的堆栈跟踪,而这使得 Node.js 也打印与抛出值相关的堆栈跟踪(不需要是 Error 实例)
启用此选项可能会对垃圾回收行为产生负面影响
—unhandled-rejections=mode
版本 | 变更 |
---|---|
v15.0.0 | 将默认模式更改为 throw。 预先触发了警告。 |
使用此标志可以改变发生未经处理的拒绝时应该发生的事情。 可以选择以下模式之一
- throw: 触发 unhandledRejection。 如果未设置此钩子,则将未处理的拒绝上升为未捕获的异常。 这是默认值。
- strict: 上升未处理的拒绝作为未捕获的异常。
- warn: 始终触发警告,无论是否设置了 unhandledRejection 钩子,但不打印弃用警告。
- warn-with-error-code: 触发 unhandledRejection。 如果未设置此钩子,则触发警告,并将进程退出码设置为 1。
- none: 静默所有警告。
-v, —version
打印 node 的版本。
-h, —help
打印 node 命令行选项。 此选项的输出不如本文档详细。
—v8-options
打印 V8 命令行选项。
—v8-pool-size=num
设置 V8 的线程池大小,用于分配后台作业。
如果设置为 0,则 V8 将根据在线处理器的数量选择合适大小的线程池。
如果提供的值大于 V8 的最大值,则选择最大值。
-c, —check
语法检查脚本而不执行。
-e, —eval “script”
将以下参数作为 JavaScript 评估。 交互式解释器中预定义的模块也可以在 script 中使用。
在 Windows 上,使用 cmd.exe 单引号将无法正常工作,因为它只能识别双 “ 进行引用。 在 Powershell 或 Git bash 中,’ 和 “ 都可用。
-p, —print “script”
与 -e 相同,但打印结果。
-i, —interactive
即使标准输入似乎不是终端,也会打开交互式解释器。
-r, —require module
在启动时预加载指定的模块。
遵循 require() 的模块解析规则。 module 可以是文件路径,也可以是 node 模块名称。
仅支持 CommonJS 模块。 尝试使用 —require 预加载 ES6 模块,则将失败并显示错误。
环境变量
FORCE_COLOR=[1, 2, 3]
FORCE_COLOR 环境变量用于启用 ANSI 彩色输出。 值可能是:
- 1、true、或空字符串 ‘’ 表示支持 16 色,
- 2 表示支持 256 色,或
- 3 表示支持 1600 万色。
当使用 FORCE_COLOR 并设置为支持的值时,NO_COLOR 和 NODE_DISABLE_COLORS 环境变量都将被忽略。
任何其他值都会导致彩色输出被禁用。
NODE_DISABLE_COLORS=1
当设置时,颜色将不会在交互式解释器中使用。
NODE_NO_WARNINGS=1
当设置为 1 时,则静默进程警告。
NODE_REPL_HISTORY=file
用于存储持久的交互式解释器历史的文件路径。 默认路径是 ~/.node_repl_history,会被此变量覆盖。 将值设置为空字符串(’’ 或 ‘ ‘)会禁用持久的交互式解释器历史记录。
NODE_REPL_EXTERNAL_MODULE=file
Node.js 模块的路径,该模块将代替内置交互式解释器加载。 将此值覆盖为空字符串 (‘’) ,则将使用内置的交互式解释器。
NODE_SKIP_PLATFORM_CHECK=value
新增于: v14.5.0
如果 value 等于 ‘1’,则在 Node.js 启动期间跳过对支持平台的检查。 Node.js 可能无法正确地执行。 在不受支持的平台上遇到的任何问题都不会得到修复。
NODE_TLS_REJECT_UNAUTHORIZED=value
如果 value 等于 ‘0’,则对 TLS 连接禁用证书验证。 这使得 TLS 和 HTTPS 不安全。 强烈建议不要使用此环境变量。
TZ
版本 | 变更 |
---|---|
v16.2.0 | 使用 process.env.TZ = 更改 TZ 变量也相当于更改 Windows 上的时区。 |
v13.0.0 | 使用 process.env.TZ 更改 TZ 变量相当于更改 POSIX 系统上的时区。 |
TZ 环境变量用于指定时区配置。
虽然 Node.js 对 TZ 的支持不会处理所有 TZ在其他环境中处理的方式,但它将支持基本的时区 ID(例如 ‘Etc/UTC’、’Europe/Paris’ 或 ‘America/New_York’)。 它可能支持其他一些缩写或别名,但强烈建议不要使用这些缩写或别名,并且不能保证。