![](/img/trans.png)
[英]nodejs | worker_thread | keep alive tcp connection within workers?
[英]How to bundle worker_thread dependencies with webpack
我正在编写一个 electron 应用程序,它使用 electron forge 进行设置和配置。 该项目使用 Webpack 5 作为捆绑器,typescript 作为开发语言。 我在主线程上运行 worker_thread 时遇到问题。
一切正常,只要 worker_thread 不使用任何导入的本地模块。 但是当我导入模块时,找不到它们。 我在想这是因为 webpack 没有捆绑 worker 的依赖项。
我的代码如下所示:
index.ts(电子主线程):
ipcMain.handle('export', async (event, measurements: Measurement[], options: ExportOptions) => {
return new Promise((resolve, reject) => {
const worker = new Worker(new URL('./export.worker.js', import.meta.url))
worker.on('message', resolve)
worker.on('error', reject)
worker.postMessage({
measurements,
options,
})
})
})
export.worker.js(与 main.ts 相同的文件夹):
const { parentPort } = require('worker_threads')
const { Export } = require('../preload/export')
parentPort.on('message', async (data) => {
const { measurements, options } = data
await Export.export(measurements, options)
parentPort.close()
})
当我尝试运行它时,我得到:
Error occurred in handler for 'export': Error: Cannot find module '../preload/export'
Require stack:
- C:\Development\spectro-demo\internal-client\.webpack\main\a3142abb2db60e4fab06.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:892:15)
at Function.Module._load (internal/modules/cjs/loader.js:737:27)
at Module.require (internal/modules/cjs/loader.js:964:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (C:\Development\spectro-demo\internal-client\.webpack\main\a3142abb2db60e4fab06.js:2:20)
at Module._compile (internal/modules/cjs/loader.js:1083:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1113:10)
at Module.load (internal/modules/cjs/loader.js:940:32)
at Function.Module._load (internal/modules/cjs/loader.js:781:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'C:\\Development\\spectro-demo\\internal-client\\.webpack\\main\\a3142abb2db60e4fab06.js'
]
}
所以我想知道:如何在我的项目中使用引用模块的 worker_threads?
我能够修复它。 似乎是 webpack 中的错误 5. 请参阅此 repo 以获取解决方法: https://github.com/DustinJSilk/web-worker-ts-webpack-test
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.