Electron:无法在生产构建中加载 chrome 扩展

Electron: Unable to load chrome extension in production build

我正在尝试通过

在 Electron 应用程序中加载 chrome 扩展
const extenPath = path.join(_dir, "build/extensions/extension_name");
const response = await session.defaultSession.loadExtension(extenPath);

扩展在开发模式下加载正常,但在生产构建中加载失败,抛出以下错误。

Error: Extension directory not found: D:\path\to\app\dist\win-unpacked\resources\app.asar\src\build\extensions\extension_name

我可以确认路径有效并且文件夹“extensions/extension_name”存在于“app.asar\src\build”中。 我查看了“app.asar”的内容来检查“extensions/extension_name”是否存在,并使用“fs”模块检查它在我的“main.js”文件中的可访问性。

有没有人来解决os这个问题,或者我在这里做错了什么?

任何见解都会有很大帮助,谢谢。

我刚刚在 package.json 文件中用 extraResources 做到了这一点,像这样:

"build": {
  "extraResources": [
    "./path/to/extensionFolder"
  ],
},

根据文档,这将

copy the file or directory with matching names directly into the app’s resources directory (Contents/Resources for MacOS, resources for Linux and Windows)

然后在 main.js 文件中我这样导入它:

const extensionPath = __dirname.split("app.asar")[0] + "extensionFolder";

// __dirname will aim at your app.asar file (your package source code for your application) 
// that is in the resource directory, for example:
// C:\Users\Admin\AppData\Local\Programs\MyElectronApp\resources\app.asar

// and your extensionFolder is next to is, at:
// C:\Users\Admin\AppData\Local\Programs\MyElectronApp\resources\extensionFolder

session.defaultSession.loadExtension(extensionPath);