Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot make with latest forge version #3573

Open
3 tasks done
dj-fiorex opened this issue Apr 21, 2024 · 3 comments
Open
3 tasks done

Cannot make with latest forge version #3573

dj-fiorex opened this issue Apr 21, 2024 · 3 comments

Comments

@dj-fiorex
Copy link

dj-fiorex commented Apr 21, 2024

Pre-flight checklist

  • I have read the contribution documentation for this project.
  • I agree to follow the code of conduct that this project uses.
  • 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

@GitMurf
Copy link

GitMurf commented Apr 25, 2024

@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

@dj-fiorex
Copy link
Author

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

@RobertGemmaJr
Copy link

Same error as the screenshot for me when using serial port

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants