gpt4 book ai didi

javascript - 打包 Electron 后 XMLHttpRequest 未按预期工作

转载 作者:行者123 更新时间:2023-12-03 00:18:12 27 4
gpt4 key购买 nike

我有一个 Electron 项目,使用ffi-napi集成一些cpp代码,并使用 Electron 锻造/Electron 编译来打包应用程序。

当我运行“electron-forge start”时,一切正常。

我的 javascript 使用 XMLHttpRequest 从自定义文件格式 (*.awd​​) 加载一些二进制数据。 XMLHttpRequest.responseType 是“arraybuffer”。

问题是,一旦我使用“Electron 锻造包”并运行生成的应用程序,我的 javascript 中的 XMLHttpRequest 就不再按预期工作。它不会抛出错误,但 XMLHttpRequest.result 比应有的小得多,因此二进制数据的解析失败。

这是我正在使用的 Electron 锻造/Electron 编译的版本:

  "dependencies": {
"electron-compile": "^6.4.4",
"electron-squirrel-startup": "^1.0.0",
"ffi-napi": "^2.4.4",
"ref": "^1.3.5"
},
"devDependencies": {
"babel-plugin-transform-async-to-generator": "^6.24.1",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"electron-forge": "^5.2.4",
"electron-prebuilt-compile": "4.0.0",
"eslint": "^3.19.0",
"eslint-config-airbnb": "^15.1.0",
"eslint-plugin-import": "^2.15.0",
"eslint-plugin-jsx-a11y": "^5.1.1",
"eslint-plugin-react": "^7.12.4"
}

对此的任何帮助将非常感激!

最佳答案

我想我自己找到了解决方案。

问题出在“Electron 编译”模块上。运行“Electron 锻造包”后,它似乎在加载我的自定义二进制文件时发生干扰,并阻止它们通过 XMLHttpRequest 正确加载。

该解决方案似乎使用 Electron 编译包附带的“addBypassChecker”来忽略要由 Electron 编译重新编译的文件(如果它们不是应用程序的一部分)。

import { app } from 'electron';
import { addBypassChecker } from 'electron-compile';

addBypassChecker((filePath) => {
return filePath.indexOf(app.getAppPath()) === -1;
});

更多信息在这里:

https://github.com/electron-userland/electron-compile/pull/199

关于javascript - 打包 Electron 后 XMLHttpRequest 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54440919/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com