【问题标题】:XMLHttpRequest not working as expected after package electron打包电子后,XMLHttpRequest 无法按预期工作
【发布时间】:2019-01-31 01:11:10
【问题描述】:

我有一个electron项目,使用ffi-napi集成一些cpp代码,使用electron-forge/electron-compile打包app。

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

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

问题是,一旦我使用“electron-forge 包”并运行生成的应用程序,我的 javascript 中的 XMLHttpRequest 不再按预期工作。它不会抛出错误,但是 XMLHttpRequest.result 比它应该的要小得多,所以二进制数据的解析失败。

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

  "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"
  }

对此的任何帮助将不胜感激!

【问题讨论】:

    标签: javascript xmlhttprequest electron


    【解决方案1】:

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

    问题出在“电子编译”模块上。运行“electron-forge package”后,它似乎在加载我的自定义二进制文件时受到干扰,并阻止它们通过 XMLHttpRequest 正确加载。

    该解决方案似乎使用了 electron-compile 包附带的“addBypassChecker”,如果它们不是 App 的一部分,则忽略要由 electron-compiled 重新编译的文件。

    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

    【讨论】:

      猜你喜欢
      • 2018-05-25
      • 2013-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2013-12-23
      • 2014-12-09
      相关资源
      最近更新 更多