forge
forge copied to clipboard
Cannot make with latest forge version
Pre-flight checklist
- [X] I have read the contribution documentation for this project.
- [X] I agree to follow the code of conduct that this project uses.
- [X] I have searched the issue tracker for a bug that matches the one I want to file, without success.
Electron Forge version
7.4.0
Electron version
30.0.1
Operating system
macOS 14.4.1
Last known working Electron Forge version
6.4.2
Expected behavior
Hello guys, i need your help to resolve a strange problem i have running "electron-forge make" i just started a new project with the template vite + typescript. for this project i needed to read serial port so i installed node-serialport. i don't have problem during development but when i try to make the app i receive this error:
An unhandled rejection has occurred inside Forge:
Error: /var/folders/6x/jlwly1vx4dg6122w4ds182k00000gn/T/electron-packager/tmp-LCABM6/Electron.app/Contents/Resources/app/node_modules/.bin/node-gyp-build: file "../../../../../../../../../../../../var/folders/6x/jlwly1vx4dg6122w4ds182k00000gn/T/electron-packager/tmp-LCABM6/Electron.app/Contents/Resources/app/node_modules/node-gyp-build/bin.js" links out of the package
at Filesystem.insertLink (/Users/user/project/project/Servizio/node_modules/@electron/asar/lib/filesystem.js:106:13)
at handleFile (/Users/user/project/project/Servizio/node_modules/@electron/asar/lib/asar.js:132:20)
at next (/Users/user/project/project/Servizio/node_modules/@electron/asar/lib/asar.js:148:11)
at next (/Users/user/project/project/Servizio/node_modules/@electron/asar/lib/asar.js:149:12)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at async MacApp.asarApp (/Users/user/project/project/Servizio/node_modules/@electron/packager/src/platform.ts:245:5)
at async MacApp.buildApp (/Users/user/project/project/Servizio/node_modules/@electron/packager/src/platform.ts:150:5)
at async MacApp.initialize (/Users/user/project/project/Servizio/node_modules/@electron/packager/src/platform.ts:141:7)
at async MacApp.create (/Users/user/project/project/Servizio/node_modules/@electron/packager/src/mac.ts:435:5)
at async Promise.all (index 0)
at async packager (/Users/user/project/project/Servizio/node_modules/@electron/packager/src/packager.ts:246:20)
this is my forge.config.ts
import type { ForgeConfig } from "@electron-forge/shared-types";
import { MakerSquirrel } from "@electron-forge/maker-squirrel";
import { MakerZIP } from "@electron-forge/maker-zip";
import { MakerDeb } from "@electron-forge/maker-deb";
import { MakerRpm } from "@electron-forge/maker-rpm";
import { VitePlugin } from "@electron-forge/plugin-vite";
import { FusesPlugin } from "@electron-forge/plugin-fuses";
import { FuseV1Options, FuseVersion } from "@electron/fuses";
import { readFileSync, writeFileSync, rmSync, } from "node:fs";
import { rm } from "node:fs/promises";
import { resolve, join } from "node:path";
import { spawnSync } from "node:child_process";
import { globSync } from "glob";
const config: ForgeConfig = {
packagerConfig: {
asar: true,
},
rebuildConfig: {},
makers: [
new MakerSquirrel({}),
new MakerZIP({}, ["darwin"]),
new MakerRpm({}),
new MakerDeb({}),
],
plugins: [
new VitePlugin({
// `build` can specify multiple entry builds, which can be Main process, Preload scripts, Worker process, etc.
// If you are familiar with Vite configuration, it will look really familiar.
build: [
{
// `entry` is just an alias for `build.lib.entry` in the corresponding file of `config`.
entry: "src/main.ts",
config: "vite.main.config.ts",
},
{
entry: "src/preload.ts",
config: "vite.preload.config.ts",
},
],
renderer: [
{
name: "main_window",
config: "vite.renderer.config.ts",
},
],
}),
// 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,
}),
],
hooks: {
packageAfterPrune: async (
_forgeConfig,
buildPath,
_electronVersion,
platform,
_arch
) => {
/**
* Serialport, usb and uiohook-napi are problematic libraries to run in Electron.
* When Electron app is been built, these libraries are not included properly in the final executable.
* What we do here is to install them explicitly and then remove the files that are not for the platform
* we are building for
*/
const packageJson = JSON.parse(
readFileSync(resolve(buildPath, "package.json")).toString()
);
packageJson.dependencies = {
serialport: "^10.0.0",
usb: "^2.9.0",
"uiohook-napi": "^1.5.2",
};
writeFileSync(
resolve(buildPath, "package.json"),
JSON.stringify(packageJson)
);
spawnSync("npm", ["install", "--omit=dev"], {
cwd: buildPath,
stdio: "inherit",
shell: true,
});
const prebuilds = globSync(`${buildPath}/**/prebuilds/*`);
const matchString = new RegExp(`prebuilds/${platform}`);
prebuilds.forEach(function (path) {
if (!path.match(matchString)) {
rmSync(path, { recursive: true });
}
});
// const gypPath = join(
// buildPath,
// "node_modules",
// "node-gyp-build",
// // "build",
// // "node_gyp_bins"
// );
// console.log("Removing gypPath", gypPath);
// await rm(gypPath, { recursive: true, force: true });
},
},
};
export default config;
i tried to use "overrides" in package.json to try to use node-gyp version 8.2.0 as someone suggests on internet but i really don't understand how to resolve this issue
Thanks!
Actual behavior
An unhandled rejection has occurred inside Forge:
Error: /var/folders/6x/jlwly1vx4dg6122w4ds182k00000gn/T/electron-packager/tmp-LCABM6/Electron.app/Contents/Resources/app/node_modules/.bin/node-gyp-build: file "../../../../../../../../../../../../var/folders/6x/jlwly1vx4dg6122w4ds182k00000gn/T/electron-packager/tmp-LCABM6/Electron.app/Contents/Resources/app/node_modules/node-gyp-build/bin.js" links out of the package
at Filesystem.insertLink (/Users/user/project/project/Servizio/node_modules/@electron/asar/lib/filesystem.js:106:13)
at handleFile (/Users/user/project/project/Servizio/node_modules/@electron/asar/lib/asar.js:132:20)
at next (/Users/user/project/project/Servizio/node_modules/@electron/asar/lib/asar.js:148:11)
at next (/Users/user/project/project/Servizio/node_modules/@electron/asar/lib/asar.js:149:12)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at async MacApp.asarApp (/Users/user/project/project/Servizio/node_modules/@electron/packager/src/platform.ts:245:5)
at async MacApp.buildApp (/Users/user/project/project/Servizio/node_modules/@electron/packager/src/platform.ts:150:5)
at async MacApp.initialize (/Users/user/project/project/Servizio/node_modules/@electron/packager/src/platform.ts:141:7)
at async MacApp.create (/Users/user/project/project/Servizio/node_modules/@electron/packager/src/mac.ts:435:5)
at async Promise.all (index 0)
at async packager (/Users/user/project/project/Servizio/node_modules/@electron/packager/src/packager.ts:246:20)
Steps to reproduce
Create a new electron project with vite+typescript Install node-serialport (i don't know if this is the cause) Try to make the project
Additional information
user@192 Servizio % DEBUG=electron-forge:* npx electron-forge make
✔ Checking your system
electron-forge:check-system checking system, create ~/.skip-forge-system-check to stop doing this +0ms
❯ Loading configuration
electron-forge:project-resolver searching for project in: /Users/user/project/project/Servizio +0ms
electron-forge:project-resolver package.json with forge dependency found in /Users/user/project/project/Servizio/package.json +1ms
The CJS build of Vite's Node API is deprecated. See https://vitejs.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details.
electron-forge:plugin:vite hooking process events +0ms
electron-forge:hook hook triggered: resolveForgeConfig +0ms
✔ Loading configuration
❯ Resolving make targets
› Making for the following targets:
✔ Resolving make targets
❯ Running package command
❯ Preparing to package application
electron-forge:project-resolver searching for project in: /Users/user/project/project/Servizio +804ms
electron-forge:project-resolver package.json with forge dependency found in /Users/user/project/project/Servizio/package.json +1ms
electron-forge:plugin:vite hooking process events +5ms
electron-forge:hook hook triggered: resolveForgeConfig +5ms
electron-forge:hook hook triggered: readPackageJson +0ms
✔ Preparing to package application
❯ Running packaging hooks
❯ Running generateAssets hook
electron-forge:hook hook triggered: generateAssets +1ms
✔ Running generateAssets hook
❯ Running prePackage hook
electron-forge:hook hook triggered: prePackage +0ms
❯ [plugin-vite] Building vite bundles
renderer config {
command: 'build',
mode: 'production',
root: '/Users/user/project/project/Servizio',
forgeConfig: { build: [ [Object], [Object] ], renderer: [ [Object] ] },
forgeConfigSelf: { name: 'main_window', config: 'vite.renderer.config.ts' }
}
vite v5.2.10 building for production...
vite v5.2.10 building for production...
vite v5.2.10 building for production...
✓ 1 modules transformed.
.vite/build/preload.js 0.29 kB │ gzip: 0.18 kB
✓ built in 41ms
✓ 2 modules transformed.
.vite/build/main.js 3.63 kB │ gzip: 1.44 kB
✓ built in 71ms
✓ 11370 modules transformed.
.vite/renderer/main_window/index.html 0.38 kB │ gzip: 0.26 kB
.vite/renderer/main_window/assets/roboto-vietnamese-500-normal-Bwg8Dbh6.woff 4.73 kB
.vite/renderer/main_window/assets/roboto-vietnamese-700-normal-Mc0c6qif.woff 4.73 kB
.vite/renderer/main_window/assets/roboto-vietnamese-400-normal-BkEBOAV9.woff 4.75 kB
.vite/renderer/main_window/assets/roboto-vietnamese-300-normal-DOxDZ6bW.woff 4.77 kB
.vite/renderer/main_window/assets/roboto-vietnamese-300-normal-CnPrVvBs.woff2 5.47 kB
.vite/renderer/main_window/assets/roboto-vietnamese-700-normal-SekShQfT.woff2 5.55 kB
.vite/renderer/main_window/assets/roboto-vietnamese-400-normal-kCRe3VZk.woff2 5.56 kB
.vite/renderer/main_window/assets/roboto-vietnamese-500-normal-CcijQRVW.woff2 5.60 kB
.vite/renderer/main_window/assets/roboto-greek-700-normal-CjuTpGfE.woff 6.30 kB
.vite/renderer/main_window/assets/roboto-greek-500-normal-CVjdsdX9.woff 6.32 kB
.vite/renderer/main_window/assets/roboto-greek-400-normal-BnGNaKeW.woff 6.35 kB
.vite/renderer/main_window/assets/roboto-greek-300-normal-Dgbe-dnN.woff 6.44 kB
.vite/renderer/main_window/assets/roboto-greek-700-normal-Cc2Tq8FV.woff2 6.94 kB
.vite/renderer/main_window/assets/roboto-greek-500-normal-CpESfwfG.woff2 7.02 kB
.vite/renderer/main_window/assets/roboto-greek-400-normal-BRWHCUYo.woff2 7.11 kB
.vite/renderer/main_window/assets/roboto-greek-300-normal-ndiuWqED.woff2 7.12 kB
.vite/renderer/main_window/assets/roboto-cyrillic-400-normal-DCQqOlfN.woff 8.39 kB
.vite/renderer/main_window/assets/roboto-cyrillic-300-normal-UX5PCucy.woff 8.43 kB
.vite/renderer/main_window/assets/roboto-cyrillic-700-normal-DAIxw5xX.woff 8.66 kB
.vite/renderer/main_window/assets/roboto-cyrillic-500-normal-QpWeYsca.woff 8.70 kB
.vite/renderer/main_window/assets/roboto-cyrillic-300-normal-D6mjswgs.woff2 9.58 kB
.vite/renderer/main_window/assets/roboto-cyrillic-400-normal-DVDTZtmW.woff2 9.63 kB
.vite/renderer/main_window/assets/roboto-cyrillic-700-normal-B5ZBKWCH.woff2 9.64 kB
.vite/renderer/main_window/assets/roboto-cyrillic-500-normal-DAkZhMOh.woff2 9.84 kB
.vite/renderer/main_window/assets/roboto-latin-ext-700-normal-DwUXTeTv.woff 10.17 kB
.vite/renderer/main_window/assets/roboto-latin-ext-500-normal-B9pAx_JH.woff 10.18 kB
.vite/renderer/main_window/assets/roboto-latin-ext-400-normal-DloBNwoc.woff 10.21 kB
.vite/renderer/main_window/assets/roboto-latin-ext-300-normal-CaUuWeqj.woff 10.36 kB
.vite/renderer/main_window/assets/roboto-latin-ext-300-normal-DEsNdRC-.woff2 11.80 kB
.vite/renderer/main_window/assets/roboto-latin-ext-500-normal-BWKy6SgX.woff2 11.80 kB
.vite/renderer/main_window/assets/roboto-latin-ext-700-normal-BYGCo3Go.woff2 11.82 kB
.vite/renderer/main_window/assets/roboto-latin-ext-400-normal-4bLplyDh.woff2 11.87 kB
.vite/renderer/main_window/assets/roboto-cyrillic-ext-700-normal-dDOtDc5i.woff 13.43 kB
.vite/renderer/main_window/assets/roboto-cyrillic-ext-500-normal-sraxM_lR.woff 13.45 kB
.vite/renderer/main_window/assets/roboto-cyrillic-ext-400-normal--KougVX-.woff 13.47 kB
.vite/renderer/main_window/assets/roboto-cyrillic-ext-300-normal-C7AGhuC_.woff 13.55 kB
.vite/renderer/main_window/assets/roboto-latin-400-normal-BU1SoK4h.woff 14.38 kB
.vite/renderer/main_window/assets/roboto-latin-700-normal-Bh431LEL.woff 14.42 kB
.vite/renderer/main_window/assets/roboto-latin-500-normal-Dcm-rhWF.woff 14.42 kB
.vite/renderer/main_window/assets/roboto-latin-300-normal-lq7MgJXa.woff 14.59 kB
.vite/renderer/main_window/assets/roboto-cyrillic-ext-700-normal-CsrCEJIc.woff2 14.68 kB
.vite/renderer/main_window/assets/roboto-cyrillic-ext-500-normal-G9W8hgzQ.woff2 14.97 kB
.vite/renderer/main_window/assets/roboto-cyrillic-ext-300-normal-TzZWIuiO.woff2 15.00 kB
.vite/renderer/main_window/assets/roboto-cyrillic-ext-400-normal-DORK9bGA.woff2 15.34 kB
.vite/renderer/main_window/assets/roboto-latin-300-normal-ThHrQhYb.woff2 15.74 kB
.vite/renderer/main_window/assets/roboto-latin-400-normal-mTIRXP6Y.woff2 15.74 kB
.vite/renderer/main_window/assets/roboto-latin-700-normal-CeM5gOv8.woff2 15.86 kB
.vite/renderer/main_window/assets/roboto-latin-500-normal-Dxdx3aXO.woff2 15.92 kB
.vite/renderer/main_window/assets/index-DuIfAhQ7.css 23.24 kB │ gzip: 10.30 kB
.vite/renderer/main_window/assets/index-xUKAgONt.js 366.79 kB │ gzip: 117.73 kB
✓ built in 3.53s
✔ [plugin-vite] Building vite bundles
✔ Running prePackage hook
✔ Running packaging hooks
❯ Packaging application
› Determining targets...
electron-forge:packager packaging with options {
asar: true,
overwrite: true,
ignore: [Function (anonymous)],
quiet: true,
dir: '/Users/user/project/project/Servizio',
arch: 'arm64',
platform: 'darwin',
afterFinalizePackageTargets: [ [AsyncFunction (anonymous)] ],
afterComplete: [ [AsyncFunction (anonymous)] ],
afterCopy: [ [AsyncFunction (anonymous)] ],
afterExtract: [ [AsyncFunction (anonymous)] ],
afterPrune: [ [AsyncFunction (anonymous)] ],
out: '/Users/user/project/project/Servizio/out',
electronVersion: '30.0.1'
} +0ms
electron-forge:packager targets: [ { platform: 'darwin', arch: 'arm64' } ] +3ms
❯ Packaging for arm64 on darwin
❯ Copying files
❯ Preparing native dependencies
❯ Finalizing package
electron-forge:hook hook triggered: packageAfterExtract +5s
✔ Copying files
electron-forge:hook hook triggered: packageAfterCopy +12ms
✔ Preparing native dependencies: 1 / 1
electron-forge:hook hook triggered: readPackageJson +21s
electron-forge:hook hook triggered: packageAfterPrune +1ms
electron-forge:hook calling hook: packageAfterPrune with args: [
'/var/folders/6x/jlwly1vx4dg6122w4ds182k00000gn/T/electron-packager/tmp-39bBbb/Electron.app/Contents/Resources/app',
'30.0.1',
'darwin',
'arm64'
] +0ms
added 4 packages, removed 94 packages, changed 17 packages, and audited 24 packages in 40s
12 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
✖ Finalizing package [FAILED: /var/folders/6x/jlwly1vx4dg6122w4ds182k00000gn/T/electron-packager/tmp-39bBbb/Electron.app/Contents/Resources/app/node_modules/.bin/node-gyp-build: file "../../../../../../../../../../../../var/folders/6x/jlwly1vx4dg6122w4ds182k00000gn/T/electron-packager/tmp-39bBbb/Electron.app/Contents/Resources/app/node_modules/node-gyp-build/bin.js" links out of the package]
✖ Packaging for arm64 on darwin [FAILED: /var/folders/6x/jlwly1vx4dg6122w4ds182k00000gn/T/electron-packager/tmp-39bBbb/Electron.app/Contents/Resources/app/node_modules/.bin/node-gyp-build: file "../../../../../../../../../../../../var/folders/6x/jlwly1vx4dg6122w4ds182k00000gn/T/electron-packager/tmp-39bBbb/Electron.app/Contents/Resources/app/node_modules/node-gyp-build/bin.js" links out of the package]
✖ Packaging application [FAILED: /var/folders/6x/jlwly1vx4dg6122w4ds182k00000gn/T/electron-packager/tmp-39bBbb/Electron.app/Contents/Resources/app/node_modules/.bin/node-gyp-build: file "../../../../../../../../../../../../var/folders/6x/jlwly1vx4dg6122w4ds182k00000gn/T/electron-packager/tmp-39bBbb/Electron.app/Contents/Resources/app/node_modules/node-gyp-build/bin.js" links out of the package]
✖ Running package command [FAILED: /var/folders/6x/jlwly1vx4dg6122w4ds182k00000gn/T/electron-packager/tmp-39bBbb/Electron.app/Contents/Resources/app/node_modules/.bin/node-gyp-build: file "../../../../../../../../../../../../var/folders/6x/jlwly1vx4dg6122w4ds182k00000gn/T/electron-packager/tmp-39bBbb/Electron.app/Contents/Resources/app/node_modules/node-gyp-build/bin.js" links out of the package]
An unhandled rejection has occurred inside Forge:
Error: /var/folders/6x/jlwly1vx4dg6122w4ds182k00000gn/T/electron-packager/tmp-39bBbb/Electron.app/Contents/Resources/app/node_modules/.bin/node-gyp-build: file "../../../../../../../../../../../../var/folders/6x/jlwly1vx4dg6122w4ds182k00000gn/T/electron-packager/tmp-39bBbb/Electron.app/Contents/Resources/app/node_modules/node-gyp-build/bin.js" links out of the package
at Filesystem.insertLink (/Users/user/project/project/Servizio/node_modules/@electron/asar/lib/filesystem.js:106:13)
at handleFile (/Users/user/project/project/Servizio/node_modules/@electron/asar/lib/asar.js:132:20)
at next (/Users/user/project/project/Servizio/node_modules/@electron/asar/lib/asar.js:148:11)
at next (/Users/user/project/project/Servizio/node_modules/@electron/asar/lib/asar.js:149:12)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at async MacApp.asarApp (/Users/user/project/project/Servizio/node_modules/@electron/packager/src/platform.ts:245:5)
at async MacApp.buildApp (/Users/user/project/project/Servizio/node_modules/@electron/packager/src/platform.ts:150:5)
at async MacApp.initialize (/Users/user/project/project/Servizio/node_modules/@electron/packager/src/platform.ts:141:7)
at async MacApp.create (/Users/user/project/project/Servizio/node_modules/@electron/packager/src/mac.ts:435:5)
at async Promise.all (index 0)
at async packager (/Users/user/project/project/Servizio/node_modules/@electron/packager/src/packager.ts:246:20)
electron-forge:plugin:vite handling process exit with: { cleanup: true } +1m
electron-forge:plugin:vite handling process exit with: { cleanup: true } +1ms
Setting asar: false i can make the program successfully
@dj-fiorex I am seeing similar issue but for my better-sqlite3 native lib. Did you ever make any progress on this other than setting asar to false?
Nothing to do, I tried two or three solutions but the problem remain
Same error as the screenshot for me when using serial port