bounty将在2小时后过期。回答此问题可获得+50声望奖励。Wokers希望引起更多关注此问题。
我们如何在Electron JS中添加工作线程?我在下面尝试过,在开发模式下运行良好。
const worker = new Worker(path.join(__dirname, 'worker.js'));
但这会在打包应用时导致错误,它会在app. asar中查找worker.js。即使在build/files中包含worker.js。
yxyvkwin1#
您可能需要执行这样的修补程序,而不是使用__dirname,因为在生产环境中,__dirname将解析为ASAR,正如您所发现的:
__dirname
const { app } = require('electron'); const rootPath = app.isPackaged ? app.getAppPath() : __dirname; const worker = new Worker(path.join(rootPath, 'worker.js'));
https://www.electronjs.org/docs/latest/api/app#appispackaged-readonly请注意,根据您的确切设置,您可能需要在生产应用中向上或向下导航文件夹,在这种情况下,您可以使用以下命令:
const rootPath = app.isPackaged ? app.getAppPath() : path.join(__dirname, '..');
ego6inou2#
我在Webpack文档中找到了答案。
new Worker(new URL('./worker.js', import.meta.url));
这对我很有用https://webpack.js.org/guides/web-workers/
2条答案
按热度按时间yxyvkwin1#
您可能需要执行这样的修补程序,而不是使用
__dirname
,因为在生产环境中,__dirname
将解析为ASAR,正如您所发现的:https://www.electronjs.org/docs/latest/api/app#appispackaged-readonly
请注意,根据您的确切设置,您可能需要在生产应用中向上或向下导航文件夹,在这种情况下,您可以使用以下命令:
ego6inou2#
我在Webpack文档中找到了答案。
这对我很有用https://webpack.js.org/guides/web-workers/