我有一个电子应用程序,在本地运行时工作,但在创建可执行文件时,它找不到模块(JSON文件),我不知道为什么。
我得到的错误是"Uncaught Exception"找不到模块'./data/background/background。json' Require Sack:
var background = require('./data/background/background.json');
这是导致错误的代码。我不明白,因为当我用npm start在本地运行我的应用程序时,它工作了。
要部署我的应用程序,我运行
npm install --save-dev electron-packager
和我的包。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,在一个发布构建文件夹中创建了可执行文件,但是打开可执行文件会出现错误
我想你的问题出在--asar
选项上。
因为你打开了这个选项,electron-packager
将把你的源代码打包到app.asar
文件,包括你的data
文件夹.
因为你的data
文件夹现在已经与所有其他源代码一起压缩到这个app.asar
文件中,你的代码再也不能访问它了。
解决方案1:
- 取出:
--asar
解决方案2:
- 添加
--extra-resource="./data"
- 告诉
electron-packager
不要在app.asar
中包含./data
。
了解--asar
阅读更多关于--extra-resource
也可以看到这个StackOverflow问题