В настоящее время я создаю приложение Electron, предназначенное для запуска на Raspberry Pi 3 B +, работающем под управлением Ubuntu MATE на архитектуре arm64
. Чтобы ускорить разработку, я пишу код с использованием виртуальной машины, на которой также работает Ubuntu MATE. Используя electron-builder
, я могу скомпилировать приложение для arm64
, и оно прекрасно работает на пи.
Проблема, с которой я сталкиваюсь, возникает, когда я представляю библиотеку onoff
для доступа к GPIO. Сборка по-прежнему завершается успешно, и приложение запускается на виртуальной машине, хотя и с сообщением об ошибке, в котором говорится, что он не может получить доступ к выводам (что, как я ожидаю, так как виртуальный блок не имеет фактического GPIO).
В Pi приложение запускает некоторые процессы, но не открывается. Если я запускаю приложение с помощью командной строки, я получаю следующую ошибку:
A JavaScript error occurred in the main process
Uncaught Exception:
Error: /tmp/.org.chromium.Chromium.h1PhHe: cannot open shared object file: No such file or directory
at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:160:31)
at Object.Module._extensions..node (internal/modules/cjs/loader.js:722:18)
at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:169:18)
at Module.load (internal/modules/cjs/loader.js:602:32)
at tryModuleLoad (internal/modules/cjs/loader.js:541:12)
at Function.Module._load (internal/modules/cjs/loader.js:533:3)
at Module.require (internal/modules/cjs/loader.js:640:17)
at require (internal/modules/cjs/helpers.js:20:18)
at bindings (/opt/Fllipper Plate Viewer/resources/app.asar/node_modules/bindings/bindings.js:112:48)
at module.exports (/opt/Fllipper Plate Viewer/resources/app.asar/node_modules/epoll/epoll.js:5:31)
Я попытался установить buildDependenciesFromSource
на true
, но, похоже, это ничего не меняет. Я также использовал electron-rebuild
. Я также попытался добавить epoll
(используется onoff
) в качестве прямой зависимости для моего собственного приложения.
Моя конфигурация для electron-webpack
и electron-builder
:
"electronWebpack": {
"whiteListedModules": [
"electron-json-storage"
]
},
"build": {
"appId": "com.electron.fllipper-plate-viewer",
"productName": "Fllipper Plate Viewer",
"directories": {
"output": "build",
"buildResources": "assets"
},
"linux": {
"category": "Utility",
"target": [
{
"target": "deb",
"arch": [
"x64",
"arm64"
]
}
]
}
}
Полагаю, что я что-то упускаю из-за использования electron-builder
и как он восстанавливает собственные зависимости, такие как epoll
, когда нацелено на конкретную архитектуру чипа? Может быть, я делаю неправильное предположение о том, как electron-webpack
или webpack
вообще обрабатывает внешние данные?