XMLHttpRequest не работает должным образом после пакета электронов - PullRequest
0 голосов
/ 30 января 2019

У меня есть электронный проект, использующий ffi-napi для интеграции некоторого кода cpp и использующий электронную кузницу / электронную компиляцию для упаковки приложения.

Все работает нормально, когда я запускаю "запуск электронной кузницы".

Мой javascript использует XMLHttpRequest для загрузки некоторых двоичных данных из пользовательского формата файла (* .awd).XMLHttpRequest.responseType - это «arraybuffer».

Проблема в том, что после того, как я использую «пакет для электронной обработки» и запустил получающееся приложение, XMLHttpRequest в моем javascript больше не работает, как ожидалось.Это не выдает ошибку, но 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"
  }

Любая помощь по этому вопросу будет очень признателен!

1 Ответ

0 голосов
/ 30 января 2019

Я думаю, что нашел решение сам.

Проблема в модуле "электронная компиляция".После запуска «пакета Electron-Forge», кажется, что он мешает при загрузке моих пользовательских двоичных файлов и препятствует их правильной загрузке через XMLHttpRequest.

Решение, похоже, использует «addBypassChecker», который поставляется с электронным компиляциейпакет для игнорирования файлов, которые будут перекомпилированы электронно-скомпилированными, если они не являются частью приложения.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...