如何在 Electron JS 中添加工作线程?

Ram*_*mar 6 electron electron-builder

我们如何在 Electron JS 中添加工作线程?我在下面尝试过,在开发模式下工作正常。

const worker = new Worker(path.join(__dirname, 'worker.js'));
Run Code Online (Sandbox Code Playgroud)

但是当应用程序打包时,这会导致错误,它会在app.asar中寻找worker.js。即使worker.js包含在build/files中。

Slb*_*box 0

您可能需要执行这样的修补程序而不是使用__dirname,因为__dirname在生产中会解析为 ASAR,正如您所发现的:

const { app } = require('electron');

const rootPath = app.isPackaged ? app.getAppPath() : __dirname;
const worker = new Worker(path.join(rootPath, 'worker.js'));
Run Code Online (Sandbox Code Playgroud)

https://www.electronjs.org/docs/latest/api/app#appispackaged-readonly

请注意,根据您的具体设置,您可能需要在生产应用程序中向上或向下导航文件夹,在这种情况下,您可以使用类似以下内容的内容:

const rootPath = app.isPackaged ? app.getAppPath() : path.join(__dirname, '..');
Run Code Online (Sandbox Code Playgroud)