菜单

运行时选项

相关源文件

此页面记录了 Node.js 中可用的运行时选项,并介绍了命令行标志如何控制 Node.js 运行时的行为。这些选项可以在启动 Node.js 时直接在命令行中提供,也可以通过 NODE_OPTIONS 等环境变量提供。有关环境变量的信息,请参阅 环境变量

概述

Node.js 运行时选项允许自定义 JavaScript 运行时环境的行为。这些选项控制 Node.js 执行的各个方面,包括调试功能、模块加载行为、安全功能和性能设置。

选项语法

node [options] [V8 options] [<program-entry-point> | -e "script" | -] [--] [arguments]

Node.js 中的选项允许使用连字符(-)或下划线(_)分隔单词。例如,--pending-deprecation--pending_deprecation 都是有效的。如果一个带值的选项被传递多次,则使用最后一次传递的值。

来源:doc/api/cli.md64-74

选项类别

Node.js 运行时选项根据其目的和范围分为几个类别

来源:src/node_options.h44-375 src/node_options.cc312-636

Node.js 选项与 V8 选项

Node.js 拥有自己的一组选项(node [options]),以及直接传递给 V8 JavaScript 引擎的选项([V8 options])。您可以通过运行 node --v8-options 来查看所有可用的 V8 选项。

来源:doc/api/cli.md18 doc/node.148-49

选项处理流程

下图说明了 Node.js 如何处理命令行选项

来源:src/node_options.cc290-308 doc/api/cli.md72-74

关键运行时选项

调试和内省选项

这些选项控制调试和内省功能

选项描述
--inspect[=[host:]port]在 host:port 上启用内省器(默认为 127.0.0.1:9229)
--inspect-brk[=[host:]port]启用内省器并在用户脚本的开头中断
--inspect-wait等待调试器连接后再开始执行
--inspect-publish-uid=stderr,http指定内省 UUID 的发布位置

来源:src/node_options.cc314-359 doc/api/cli.md96-127

模块系统选项

这些选项会影响模块的加载和执行方式

选项描述
--input-type=type指定字符串输入的输入类型(commonjs、module、commonjs-typescript、module-typescript)
--conditions=conditions用于条件导出和导入的其他用户条件
--experimental-import-meta-resolve启用实验性的 import.meta.resolve() 支持
--experimental-loader=module使用指定的模块作为自定义加载器
--experimental-wasm-modules启用实验性的 WebAssembly 模块支持

来源:src/node_options.cc363-484 doc/api/cli.md445-460

权限模型选项

这些选项用于启用和配置权限模型

选项描述
--permission启用权限系统
--allow-fs-read=path允许对指定路径进行文件系统读取访问
--allow-fs-write=path允许对指定路径进行文件系统写入访问
--allow-addons当设置任何权限时,允许使用原生插件
--allow-child-process当设置任何权限时,允许使用子进程
--allow-worker当设置任何权限时,允许使用 worker 线程
--allow-wasi当设置任何权限时,允许使用 WASI

来源:doc/api/cli.md119-190 src/node_options.cc485-513

性能分析选项

这些选项启用了各种性能分析功能

选项描述
--cpu-prof启动时开始 V8 CPU 分析器
--cpu-prof-dir=dir输出 CPU 配置文件的目录
--cpu-prof-name=nameCPU 配置文件输出的文件名
--cpu-prof-interval=microsecondsCPU 配置文件的采样间隔(默认为 1000)
--heap-prof启动时开始 V8 堆分析器
--heap-prof-dir=dir输出堆配置文件的目录
--heap-prof-name=name堆配置文件输出的文件名
--heap-prof-interval=bytes堆配置文件的平均采样间隔(以字节为单位)(默认为 512 * 1024)

来源:doc/api/cli.md482-536 src/node_options.cc170-180

实验性功能选项

Node.js 包含许多实验性功能,可以通过特定标志启用

选项描述
--experimental-eventsource启用实验性 EventSource Web API
--experimental-shadow-realm启用 ShadowRealm 支持
--experimental-vm-modules在 VM 模块中启用实验性 ES 模块支持
--experimental-webstorage启用实验性 Web Storage API
--experimental-transform-types启用 TypeScript 专有语法的转换为 JavaScript 代码
--experimental-test-module-mocks在测试运行器中启用模块模拟

来源:doc/api/cli.md429-461 src/node_options.cc429-444

选项实现

Node.js 的选项系统在几个内部类中实现

来源:src/node_options.h47-375 src/node_options.cc37-112

选项解析

选项使用与选项类相对应的专用解析器类进行解析

来源:src/node_options.cc244-268 src/node_options.cc379-443

选项验证

每类选项都有其在 CheckOptions 方法中实现的验证逻辑。这确保了选项之间相互兼容,并且对于当前的 Node.js 构建配置是有效的。

例如,验证可以防止不兼容的选项一起使用

--tls-min-v1.3 and --tls-max-v1.2 cannot be used together
--use-openssl-ca and --use-bundled-ca cannot be used together
--check and --eval cannot be used together

来源:src/node_options.cc76-112 src/node_options.cc111-239

全局运行时访问

一些运行时选项会在全局 process 对象上设置属性,从而可以从 JavaScript 中访问它们

命令行标志Process 属性值类型
--evalprocess._eval字符串
--printprocess._print_eval布尔值
--checkprocess._syntax_check_only布尔值
--interactiveprocess._forceRepl布尔值
--requireprocess._preload_modules数组
--no-deprecationprocess.noDeprecation布尔值
--no-warningsprocess.noProcessWarnings布尔值
--trace-warningsprocess.traceProcessWarnings布尔值
--throw-deprecationprocess.throwDeprecation布尔值
--trace-deprecationprocess.traceDeprecation布尔值
--inspect-brkprocess._breakFirstLine布尔值
--inspect-brk-nodeprocess._breakNodeFirstLine布尔值

来源: lib/internal/process/pre_execution.js244-257 doc/api/globals.md623-643

运行时选项的影响

下图显示了不同的运行时选项如何影响 Node.js 运行时的不同部分。

来源: doc/api/cli.md314-536 lib/internal/process/pre_execution.js89-112

结论

Node.js 运行时选项提供了配置和控制 Node.js 环境行为的强大方法。理解这些选项对于 Node.js 应用程序的调试、性能优化、启用实验性功能和配置安全限制至关重要。