导入的函数将无法在节点工作线程中工作,因为未加载依赖关系图

An imported function won't work in a Node Worker Thread because the dependency graph isn't loaded

我正在尝试通过 node-worker-threads-pool包装器)包及其 DynamicPool.[=20= 来使用 Node 的 worker_threads ]

我的问题是,执行一个提供具有 import 的函数的线程将无法工作,因为该函数将是 undefined.

// moduleA.js
import xyz from './xyz.js'

const f = x => {
   xyz () //<-- f is undefined
}

export default f

// moduleB.js
import f from './moduleA.js'


f (1) // 

// moduleC.js
const x = await pool.exec ({
   task: f
})

这是 node-worker-threads-pool 或 Node 的 worker_threads 的特定问题吗?您知道解决此问题的方法吗?

看来是the library的限制,与模块无关:

Notice: If task is a function, you can not use closure in it! If you do want to use external data in the function, you can use workerData to pass some cloneable data.

这听起来很像是他们正在将函数字符串化并仅从该代码创建一个 worker。

改为使用工作文件。