Я пытаюсь упаковать электронное приложение с помощью обычного шаблона (без фреймворков). Когда я запускаю: пакет запуска npm ИЛИ пакет запуска пряжи. Я получаю сообщение об ошибке:
PS C:\GitHub\electron-project\lambda> yarn run package --platform win32
yarn run v1.22.22
$ electron-forge package --platform win32
✔ Checking your system
› Determining targets...
❯ Packaging for x64 on win32
✔ Copying files
⠸ Preparing native dependencies
⠸ Finalizing package
◼ Running postPackage hook
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Мой forge.config.js выглядит так:
const { FusesPlugin } = require('@electron-forge/plugin-fuses');
const { FuseV1Options, FuseVersion } = require('@electron/fuses');
module.exports = {
packagerConfig: {
asar: true,
},
rebuildConfig: {},
makers: [
{
name: '@electron-forge/maker-squirrel',
config: {},
},
{
name: '@electron-forge/maker-zip',
platforms: ['darwin'],
},
{
name: '@electron-forge/maker-deb',
config: {},
},
{
name: '@electron-forge/maker-rpm',
config: {},
},
],
plugins: [
{
name: '@electron-forge/plugin-auto-unpack-natives',
config: {},
},
// Fuses are used to enable/disable various Electron functionality
// at package time, before code signing the application
new FusesPlugin({
version: FuseVersion.V1,
[FuseV1Options.RunAsNode]: false,
[FuseV1Options.EnableCookieEncryption]: true,
[FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
[FuseV1Options.EnableNodeCliInspectArguments]: false,
[FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
[FuseV1Options.OnlyLoadAppFromAsar]: true,
}),
],
};
Мой package.json выглядит так:
{
"name": "lambda",
"productName": "lambda",
"version": "alpha-1.0.0",
"main": "src/index.js",
"scripts": {
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make",
"publish": "electron-forge publish",
"lint": "echo \"No linting configured\""
},
"devDependencies": {
"@electron-forge/cli": "^7.4.0",
"@electron-forge/maker-deb": "^7.4.0",
"@electron-forge/maker-rpm": "^7.4.0",
"@electron-forge/maker-squirrel": "^7.4.0",
"@electron-forge/maker-zip": "^7.4.0",
"@electron-forge/plugin-auto-unpack-natives": "^7.4.0",
"@electron-forge/plugin-fuses": "^7.4.0",
"@electron/fuses": "^1.8.0",
"electron": "12.2.3",
"tailwindcss": "^3.4.3"
},
"keywords": [],
"author": "skyrxzz",
"description": "something but not empty",
"license": "MIT",
"dependencies": {
"electron-squirrel-startup": "^1.0.1",
"gkm": "^0.2.0",
"robotjs": "^0.6.0"
}
}
Запуск на узле v16.14.0
Я попытался упаковать электронное приложение, ожидая пакета для Win32, но вместо этого получил ошибку, которая ничего не сказала мне о проблеме.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я отладил файл index.js, используя пакет npm, рекомендованный службой поддержки Electron-Forge. Это помогло мне определить, что проблема связана с robotjs. robotjs был связан с неправильной версией Node ABI — 87 (Node.js v16.14.0), когда ему требовался ABI — 93 (Node.js v16.0.0). Чтобы решить эту проблему, мне пришлось понизить версию @electron-forge/cli до 6.0.0-beta.61, поскольку последняя на тот момент версия 7.4.0 требовала Node.js v16.4.0 или новее.
Вы можете использовать переменные env
DEBUG, чтобы получить дополнительную информацию об ошибке. Список доступных опций смотрите здесь.