new Worker(filename[, options])


  • filename <string> | <URL> Worker 主脚本或模块的路径。必须是绝对路径或相对路径(即相对于当前工作目录),相对路径需以 ./../ 开头,或是使用 file:data: 协议的 WHATWG URL 对象。使用 data: URL 时,数据会根据 MIME 类型通过 ECMAScript 模块加载器 进行解释。如果 options.evaltrue,则此处为包含 JavaScript 代码的字符串,而不是路径。
  • options <Object>
    • argv <any[]> 参数列表,这些参数将被转换为字符串并追加到工作线程的 process.argv 中。这与 workerData 大致相似,但这些值会出现在全局 process.argv 中,就好像它们作为命令行选项传递给脚本一样。
    • env <Object> 如果设置,指定 Worker 线程内部 process.env 的初始值。作为一个特殊值,可以使用 worker.SHARE_ENV 来指定父线程和子线程共享它们的环境变量;在这种情况下,对某一线程的 process.env 对象的更改也会影响另一线程。默认值: process.env
    • eval <boolean> 如果为 true 且第一个参数是 string,则将构造函数的第一个参数解释为脚本,在工作线程上线后执行一次。
    • execArgv <string[]> 传递给工作线程的 Node CLI 选项列表。V8 选项(例如 --max-old-space-size)以及影响进程的选项(例如 --title)不被支持。如果设置,则在工作线程中作为 process.execArgv 提供。默认情况下,选项会从父线程继承。
    • stdin <boolean> 如果设置为 true,则 worker.stdin 会提供一个可写流,其内容将显示在 Worker 内的 process.stdin 中。默认情况下,不提供任何数据。
    • stdout <boolean> 如果设置为 true,则 worker.stdout 不会自动传输到父进程的 process.stdout
    • stderr <boolean> 如果设置为 true,则 worker.stderr 不会自动传输到父进程的 process.stderr
    • workerData <any> 任何 JavaScript 值都会被克隆并作为 require('node:worker_threads').workerData 提供。克隆的过程如 HTML 结构化克隆算法 所述,如果对象无法克隆(例如因为它包含 function),则会抛出错误。
    • trackUnmanagedFds <boolean> 如果设置为 true,Worker 将跟踪通过 fs.open()fs.close() 管理的原始文件描述符,并在 Worker 退出时关闭它们,这类似于通过 FileHandle API 管理的网络套接字或文件描述符等其他资源。此选项会自动被所有嵌套的 Worker 继承。默认值: true
    • transferList <Object[]> 如果在 workerData 中传入一个或多个类似 MessagePort 的对象,则必须为这些对象提供 transferList,否则会抛出 ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST。有关更多信息,请参阅 port.postMessage()
    • resourceLimits <Object> 新的 JS 引擎实例的可选资源限制集合。达到这些限制会导致 Worker 实例终止。这些限制只影响 JS 引擎,不影响任何外部数据,包括 ArrayBuffer。即使设置了这些限制,如果进程遇到全局内存不足的情况,仍可能会中止。
      • maxOldGenerationSizeMb <number> 主堆的最大大小(以 MB 为单位)。如果命令行参数 --max-old-space-size 已设置,它将覆盖此设置。
      • maxYoungGenerationSizeMb <number> 最近创建对象的堆空间的最大大小。如果命令行参数 --max-semi-space-size 已设置,它将覆盖此设置。
      • codeRangeSizeMb <number> 用于生成代码的预分配内存范围的大小。
      • stackSizeMb <number> 线程的默认最大堆栈大小。较小的值可能导致 Worker 实例无法使用。默认值: 4
    • name <string> 一个可选的 name,用于替换线程名称以及用于调试/识别目的的工作线程标题,最终标题将为 [worker ${id}] ${name}。该参数的最大允许长度取决于操作系统。如果提供的名称超过限制,将会被截断
      • 最大尺寸:
        • Windows:32,767 个字符
        • macOS:64 个字符
        • Linux:16 个字符
        • NetBSD:受限于 PTHREAD_MAX_NAMELEN_NP
        • FreeBSD 和 OpenBSD:限制为 MAXCOMLEN 默认值: 'WorkerThread'