electron-react-boilerplate / electron-react-boilerplate

A Foundation for Scalable Cross-Platform Apps

Home Page:https://electron-react-boilerplate.js.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Issue with node-7z only in packaged app [not really a bug, asking for help]

dowmeister opened this issue · comments

Prerequisites

  • Using npm
  • Using an up-to-date main branch
  • Using latest version of devtools. Check the docs for how to update
  • Tried solutions mentioned in #400
  • For issue in production release, add devtools output of DEBUG_PROD=true npm run build && npm start

Expected Behavior

I'm using node-7z and 7zip-bin to unzip .7z files

Current Behavior

Everything works fine in development mode but fire the error TypeError: je.createExtractorFromFile is not a function in packaged app

Steps to Reproduce

./release/app/package.json deps

"dependencies": {
    "7zip-bin": "^5.2.0",
    "node-7z": "^3.0.0"
  },

./package.json deps

"@fortawesome/fontawesome-svg-core": "^6.5.1",
   "@fortawesome/free-brands-svg-icons": "^6.5.1",
   "@fortawesome/free-regular-svg-icons": "^6.5.1",
   "@fortawesome/free-solid-svg-icons": "^6.5.1",
   "@fortawesome/react-fontawesome": "^0.2.0",
   "axios": "^1.6.4",
   "bootstrap": "5.2",
   "electron-debug": "^3.2.0",
   "electron-log": "^4.4.8",
   "electron-request": "^1.8.3",
   "electron-store": "^8.1.0",
   "electron-updater": "^5.3.0",
   "node-7z": "^3.0.0",
   "node-fetch": "^3.3.2",
   "node-fetch-progress": "^1.0.2",
   "node-stream-zip": "^1.15.0",
   "node-unrar-js": "^2.0.2",
   "pretty-bytes": "^6.1.1",
   "react": "^18.2.0",
   "react-dom": "^18.2.0",
   "react-loading-overlay-ts": "^2.0.2",
   "react-router-dom": "^6.11.2",
   "react-toastify": "^9.1.3",
   "reactstrap": "^9.2.1",
   "underscore": "^1.13.6"

Relevant code from the main process:

import Seven from 'node-7z';
import sevenBin from '7zip-bin';

...

 private async get7zFiles(download: DownloadEntry): Promise<string[]> {
    return new Promise((resolve, reject) => {
      const files: string[] = [];
      const myStream = Seven.list(download.localFileName, { $bin: pathTo7zip });
      myStream.on('data', function (data) {
        files.push(data.file);
      });

      myStream.on('end', function () {        resolve(files);
      });

      myStream.on('error', reject);
    });
  }
[2024-01-05 11:43:21.024] [info]  TypeError: je.createExtractorFromFile is not a function
    at Pe.checkIfNeedUnzip (C:\Users\Francesco\AppData\Local\Programs\trucky-modmanager\resources\app.asar\dist\main\webpack:\trucky-modmanager\src\core\services\DownloadsService.ts:348:39)
    at Pe.finalizeDownload (C:\Users\Francesco\AppData\Local\Programs\trucky-modmanager\resources\app.asar\dist\main\webpack:\trucky-modmanager\src\core\services\DownloadsService.ts:271:34)
    at M.<anonymous> (C:\Users\Francesco\AppData\Local\Programs\trucky-modmanager\resources\app.asar\dist\main\webpack:\trucky-modmanager\src\core\services\DownloadsService.ts:222:14)
    at M.emit (node:events:525:35)
    at IncomingMessage.<anonymous> (C:\Users\Francesco\AppData\Local\Programs\trucky-modmanager\resources\app.asar\dist\main\webpack:\trucky-modmanager\node_modules\request\request.js:1076:12)
    at Object.onceWrapper (node:events:627:28)
    at IncomingMessage.emit (node:events:525:35)
    at endReadableNT (node:internal/streams/readable:1358:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21)
  1. Installed 7z-bin and, node-7z in ./release/app/package.json

  2. Installed node-7z in root package.json

  3. ran npm run package

  4. ran the installed app, tried to unzip

Possible Solution (Not obligatory)

Context

Your Environment

  • Node version : 16
  • electron-react-boilerplate version or branch :
  • Operating System and version :
    Windows 10
  • Link to your project :