forge icon indicating copy to clipboard operation
forge copied to clipboard

Cannot make with latest forge version

Open dj-fiorex opened this issue 10 months ago • 5 comments

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 avatar Apr 21 '24 16:04 dj-fiorex

@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?

image

GitMurf avatar Apr 25 '24 14:04 GitMurf

Nothing to do, I tried two or three solutions but the problem remain

dj-fiorex avatar Apr 25 '24 18:04 dj-fiorex

Same error as the screenshot for me when using serial port

RobertGemmaJr avatar May 07 '24 15:05 RobertGemmaJr