Импортированная функция не будет работать в рабочем потоке узла, потому что граф зависимостей не загружен. - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь использовать узел worker_threads, используя node-worker-threads-pool ( обертку ) и его DynamicPool.

Моя проблема в том, что выполнение потока, дающего функцию, которая имеет import s, не будет работать, потому что эта функция будет 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
})

Это специфическая c проблема node-worker-threads-pool или узел worker_threads? Знаете ли вы, как можно обойти эту проблему?

1 Ответ

1 голос
/ 18 июня 2020

Похоже, что это ограничение библиотеки и не имеет ничего общего с модулями:

Примечание: если task является функцией, вы не можете использовать закрытие в нем! Если вы действительно хотите использовать внешние данные в функции, вы можете использовать workerData для передачи некоторых клонируемых данных.

Это очень похоже на то, как будто они структурируют функцию и создают работника только из этого кода.

Вместо этого используйте рабочий файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...