reactjs - Electron:无法在生产构建中加载 chrome 扩展
问题描述
我正在尝试通过以下方式在电子应用程序中加载 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”文件中的可访问性。
有没有人遇到过这个问题,或者我在这里做错了什么?
- 操作系统:Windows
- 电子:^13.1.2
- 电子生成器:^22.11.7
- 构建命令:set NODE_ENV=production && electron-builder build --win
任何见解都会有很大帮助,谢谢。
解决方案
我只是设法使用package.json 文件中的extraResources来做到这一点,如下所示:
"build": {
"extraResources": [
"./path/to/extensionFolder"
],
},
根据文档,这将
将具有匹配名称的文件或目录直接复制到应用程序的资源目录中(MacOS 为 Contents/Resources,Linux 和 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);
推荐阅读
- vb.net - 当其他文本框为空时禁用文本框
- java - 未找到休眠实体
- java - 遵循spring boot和jsp的一个教程。得到以下错误
- git - AWS:无法克隆 repo Codecommit,请求的 URL 返回错误:403
- sql - 仅选择特定列仅包含特定值的 ID
- android - 领域和 LiveData - Transformations.map 未将列表发布到 MutableLiveData
- java - gwt应用程序和spring MVC返回错误404
- matlab - Matlab ode15s在求解过程中特定时间更改参数值
- python - Python Eve 0.8:如何使用 $centerSphere 执行 $geowithin?
- amazon-web-services - 使用 terraform throw 创建 aws_db_subnet_group 创建数据库子网组时出错:InvalidParameterValue