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这个问题,或者我在这里做错了什么?
- os: Windows
- 电子:^13.1.2
- 电子生成器:^22.11.7
- 构建命令:set NODE_ENV=production && electron-builder build --win
任何见解都会有很大帮助,谢谢。
我刚刚在 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);
我正在尝试通过
在 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这个问题,或者我在这里做错了什么?
- os: Windows
- 电子:^13.1.2
- 电子生成器:^22.11.7
- 构建命令:set NODE_ENV=production && electron-builder build --win
任何见解都会有很大帮助,谢谢。
我刚刚在 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);