首页 > 解决方案 > 可执行电子应用程序找不到模块

问题描述

我有一个可以在本地运行的电子应用程序,但是在创建可执行文件时它找不到模块(JSON 文件),我不知道为什么。

我得到的错误是“未捕获的异常”找不到模块'./data/background/background.json' Require Sack:

 var background = require('./data/background/background.json');

这是导致错误的代码。我不明白,因为当我使用 npm start 在本地运行我的应用程序时,它可以工作。

为了部署我的应用程序,我跑了

npm install --save-dev electron-packager

我的 package.json 文件看起来像这样

{
  "name": "moveanimator",
  "version": "1.0.0",
  "description": "Create Move Animations for Fire Red",
  "main": "main.js",
  "scripts": {
    "start": "electron .",
    "package-mac": "electron-packager . --overwrite --platform=darwin --arch=x64 --icon=assets/icons/mac/icon.icns --prune=true --out=release-builds",
    "package-win": "electron-packager . electron-tutorial-app --overwrite --asar=true --platform=win32 --arch=ia32 --icon=assets/icons/win/icon.ico --prune=true --out=release-builds --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName=\"Move Animation Creator\"",    
    "package-linux": "electron-packager . electron-tutorial-app --overwrite --asar=true --platform=linux --arch=x64 --icon=assets/icons/png/icon.png --prune=true --out=release-builds"
  },
  "author": "ortz3",
  "license": "ISC",
  "dependencies": {
    "bootstrap": "^5.0.2",
    "check-disk-space": "^3.0.1",
    "electron": "^13.1.4",
    "jquery": "^3.6.0"
  },
  "devDependencies": {
    "electron-packager": "^15.3.0"
  }
}

然后我运行 npm run package-win 它在发布构建文件夹中创建了可执行文件,但打开可执行文件会导致错误

标签: javascriptnode.jselectron

解决方案


我认为你的问题是--asar选项。

因为您打开了此选项,所以electron-packager会将您的源代码打包到一个包含您的app.asar文件的文件中。data

因为您的data文件夹现在已与所有其他源代码一起压缩到此app.asar文件中,您的代码将无法再访问它。

解决方案1:

  • 取出:--asar

解决方案2:

  • 添加此选项:--extra-resource=\"./data\"
  • 这将告诉electron-packager不要包含./dataapp.asar.

阅读更多关于--asar

阅读更多关于--extra-resource

另请参阅此 StackOverflow 问题


推荐阅读