可执行的 Electron App 找不到模块
Executable Electron App cannot find module
我有一个 electron 应用程序可以在本地 运行ning 时运行,但是在创建可执行文件时它找不到模块(JSON 文件),我不确定为什么。
我得到的错误是“未捕获的异常”找不到模块'。/data/background/background。json'需要解雇:
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 运行 package-win 在发布构建文件夹中创建了可执行文件,但打开可执行文件导致错误
我认为你的问题是 --asar
选项。
因为您启用了此选项electron-packager
会将您的源代码打包到一个app.asar
文件包括您的data
文件夹。
因为您的 data
文件夹现在已与所有其他源代码一起压缩到此 app.asar
文件中,您的代码无法再访问它。
解决方案 1:
- 取出:
--asar
解决方案 2:
- 添加此选项:
--extra-resource=\"./data\"
- 这将告诉
electron-packager
不要在 app.asar
中包含 ./data
。
Read more about --extra-resource
我有一个 electron 应用程序可以在本地 运行ning 时运行,但是在创建可执行文件时它找不到模块(JSON 文件),我不确定为什么。
我得到的错误是“未捕获的异常”找不到模块'。/data/background/background。json'需要解雇:
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 运行 package-win 在发布构建文件夹中创建了可执行文件,但打开可执行文件导致错误
我认为你的问题是 --asar
选项。
因为您启用了此选项electron-packager
会将您的源代码打包到一个app.asar
文件包括您的data
文件夹。
因为您的 data
文件夹现在已与所有其他源代码一起压缩到此 app.asar
文件中,您的代码无法再访问它。
解决方案 1:
- 取出:
--asar
解决方案 2:
- 添加此选项:
--extra-resource=\"./data\"
- 这将告诉
electron-packager
不要在app.asar
中包含./data
。
Read more about --extra-resource