new Worker(filename[, options])


  • filename <string> | <URL> 工作线程主脚本或模块的路径。 必须是以 ./../ 开头的绝对路径或相对路径(即相对于当前工作目录)、或者是使用 file:data: 协议的 WHATWG URL 对象 当使用 data: 网址时,使用 ECMAScript 模块加载器根据 MIME 类型解释数据。 如果 options.evaltrue,则这是包含 JavaScript 代码(而不是路径)的字符串。
  • options <Object>
    • argv <any[]> 将被字符串化并附加到工作线程中的 process.argv 的参数列表。 这与 workerData 非常相似,但这些值将在全局 process.argv 上可用,就像它们作为命令行选项传给脚本一样。
    • env <Object> 如果设置,则指定工作线程内 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 将提供其内容将在工作线程中显示为 process.stdin 的可写流。 默认情况下,不提供任何数据。
    • stdout <boolean> 如果设置为 true,则 worker.stdout 将不会自动通过管道传输到父线程中的 process.stdout
    • stderr <boolean> 如果设置为 true,则 worker.stderr 将不会自动通过管道传输到父线程中的 process.stderr
    • workerData <any> 任何将被克隆并作为 require('worker_threads').workerData 可用的 JavaScript 值。 克隆将按照 HTML 结构化克隆算法中的描述进行,如果无法克隆对象(例如,因为它包含 function),则会抛出错误。
    • trackUnmanagedFds <boolean> 如果设置为 true,则工作线程将跟踪通过 fs.open()fs.close() 管理的原始文件描述符,并在工作线程退出时关闭它们,类似于网络套接字或通过 FileHandle API 管理的文件描述符等其他资源。 此选项会被所有嵌套的 Worker 自动继承。 默认值: false.
    • transferList <Object[]> 如果在 workerData 中传入了一个或多个类似 MessagePort 的对象,则这些条目需要 transferList,否则将抛出 ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST。 有关详细信息,请参阅 port.postMessage()
    • resourceLimits <Object> 新的 JS 引擎实例的一组可选资源限制。 达到这些限制将导致 Worker 实例终止。 这些限制只影响 JS 引擎,不影响外部数据,不包括 ArrayBuffer。 即使设置了这些限制,如果遇到全局内存不足的情况,进程仍可能会中止。
      • maxOldGenerationSizeMb <number> 主堆的最大大小 (以 MB 为单位)。
      • maxYoungGenerationSizeMb <number> 最近创建的对象的最大堆空间大小。
      • codeRangeSizeMb <number> 用于生成代码的预分配内存范围的大小。
      • stackSizeMb <number> 线程的默认最大堆栈大小。 较小的值可能会导致工作线程实例无法使用。 默认值: 4
  • filename <string> | <URL> The path to the Worker’s main script or module. Must be either an absolute path or a relative path (i.e. relative to the current working directory) starting with ./ or ../, or a WHATWG URL object using file: or data: protocol. When using a data: URL, the data is interpreted based on MIME type using the ECMAScript module loader. If options.eval is true, this is a string containing JavaScript code rather than a path.
  • options <Object>
    • argv <any[]> List of arguments which would be stringified and appended to process.argv in the worker. This is mostly similar to the workerData but the values will be available on the global process.argv as if they were passed as CLI options to the script.
    • env <Object> If set, specifies the initial value of process.env inside the Worker thread. As a special value, worker.SHARE_ENV may be used to specify that the parent thread and the child thread should share their environment variables; in that case, changes to one thread’s process.env object will affect the other thread as well. Default: process.env.
    • eval <boolean> If true and the first argument is a string, interpret the first argument to the constructor as a script that is executed once the worker is online.
    • execArgv <string[]> List of node CLI options passed to the worker. V8 options (such as --max-old-space-size) and options that affect the process (such as --title) are not supported. If set, this will be provided as process.execArgv inside the worker. By default, options will be inherited from the parent thread.
    • stdin <boolean> If this is set to true, then worker.stdin will provide a writable stream whose contents will appear as process.stdin inside the Worker. By default, no data is provided.
    • stdout <boolean> If this is set to true, then worker.stdout will not automatically be piped through to process.stdout in the parent.
    • stderr <boolean> If this is set to true, then worker.stderr will not automatically be piped through to process.stderr in the parent.
    • workerData <any> Any JavaScript value that will be cloned and made available as require('worker_threads').workerData. The cloning will occur as described in the HTML structured clone algorithm, and an error will be thrown if the object cannot be cloned (e.g. because it contains functions).
    • trackUnmanagedFds <boolean> If this is set to true, then the Worker will track raw file descriptors managed through fs.open() and fs.close(), and close them when the Worker exits, similar to other resources like network sockets or file descriptors managed through the FileHandle API. This option is automatically inherited by all nested Workers. Default: false.
    • transferList <Object[]> If one or more MessagePort-like objects are passed in workerData, a transferList is required for those items or ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST will be thrown. See port.postMessage() for more information.
    • resourceLimits <Object> An optional set of resource limits for the new JS engine instance. Reaching these limits will lead to termination of the Worker instance. These limits only affect the JS engine, and no external data, including no ArrayBuffers. Even if these limits are set, the process may still abort if it encounters a global out-of-memory situation.
      • maxOldGenerationSizeMb <number> The maximum size of the main heap in MB.
      • maxYoungGenerationSizeMb <number> The maximum size of a heap space for recently created objects.
      • codeRangeSizeMb <number> The size of a pre-allocated memory range used for generated code.
      • stackSizeMb <number> The default maximum stack size for the thread. Small values may lead to unusable Worker instances. Default: 4.