我已经尝试了这么多的解决方案,从互联网和聊天GPT,但没有一个工作,我累了,可以任何Maven帮助?
当我运行“electron.app”时运行完美,但构建后显示白色屏幕和此错误。
第一个月
此外,此图像显示警告,而运行应用程序没有构建
image of warning
这是我在电子主文件中的代码
const { app, BrowserWindow } = require('electron');
const path = require('path');
let mainWindow;
function createWindow() {
mainWindow = new BrowserWindow({
width: 1300,
height: 1000,
icon: path.join(__dirname,"/logo.png"),
webPreferences: {
nodeIntegration: true,
},
});
mainWindow.loadURL(`file://${path.join(__dirname, '../build/index.html')}`);
mainWindow.on('closed', () => {
mainWindow = null;
});
}
app.on('ready', createWindow);
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', () => {
if (mainWindow === null) {
createWindow();
}
});
字符串
config
{
"name": "brahmani",
"version": "0.1.0",
"private": false,
"main": "main.js",
"description": "local app",
"author": "me",
"scripts": {
"electron": "electron .",
"electron-build": "electron-builder"
},
"build": {
"files": [
"**/*"
],
"win": {
"target": "nsis"
}
},
"devDependencies": {
"electron": "^27.1.3",
"electron-builder": "^24.9.1"
}
};
型
React应用工具
{
"name": "brahmani",
"version": "0.1.0",
"private": false,
"main": "src/main.js",
"dependencies": {
"@headlessui/react": "^1.7.17",
"@heroicons/react": "^2.0.18",
"@reduxjs/toolkit": "^1.9.7",
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"formik": "^2.4.5",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-icons": "^4.12.0",
"react-redux": "^8.1.3",
"react-router-dom": "^6.20.0",
"react-scripts": "5.0.1",
"react-to-print": "^2.14.15",
"serve": "^14.2.1",
"web-vitals": "^2.1.4",
"yup": "^1.3.2"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"build": {
"directories": {
"buildResources": "build",
"app": ""
},
"files": [
"**/*"
]
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"tailwindcss": "^3.3.5"
}
}
型
我使用电子构建器来构建电子应用程序
我在react中安装了路由器,但从未在应用程序中使用
我已经尝试了大约20种不同的方法,并改变了我的代码很多时候没有工作,我认为这是一个简单的错误,但我没有得到它,我也有我的电子应用程序和React应用程序在同一个文件夹和两个应用程序共享一个单一的package.json,它不应该是问题,因为我已经有一个应用程序运行相同的结构。
1条答案
按热度按时间bbuxkriu1#
为了严格回答你的问题,你会得到这个错误,因为你的
index.html
路径不正确。我无法告诉你应该使用什么路径,因为我不知道你的打包应用文件夹结构是什么样子的,所以你需要自己检查。要做到这一点,你可以暂时禁用asar
,看看资源文件夹中的内容,然后修复路径:字符串
我认为你们的配置有几个问题。
当打包你的应用时,你只想打包你需要的东西。在React应用的上下文中,这意味着只打包
build
文件夹,在那里所有的东西都被整齐地捆绑在一起。对于electron-builder
,理想情况下你只需要为files
选项打包这个文件夹:型
你的配置的一个问题是,你在
src
中有main.js
,这意味着它不会被包含在build
文件夹中(因为它不被React使用,只被Electron使用)。你有两个解决方案:1.将
main.js
包含在build
文件夹中,但不要捆绑您的React应用是使用CRA创建的,它允许您使用
public
文件夹在构建时添加其他文件和资产。将main.js
移动到此文件夹中将使其在build
中可用,然后您可以在窗口中加载HMTL:型
您还需要告诉
electron-builder
从build/main.js
文件夹使用main.js
,而不是从public/main.js
(将在package.json
的main
上配置)。为此,您可以使用extraMetadata
选项将属性注入package.json
:型
这种方法的问题是,由于
main.js
没有捆绑,如果你在主进程上使用额外的依赖项,打包的应用程序可能会抛出“模块未找到”错误(我可能错了,但我认为来自electron
和Node.js API的模块不需要捆绑)。要解决这个问题,你需要配置打包器以在包中包含这些额外的模块。2.将
main.js
放入build
文件夹并捆绑在我看来,这是最干净的解决方案,但也是最棘手的,因为你的React应用程序是使用CRA创建的,这几乎没有或根本没有编辑配置的可能性。
基本上,你需要添加一个额外的webpack配置来捆绑你的主进程代码(如果你有预加载,你也可以这样做)。要做到这一点,你可以使用一个工具,如
craco
或react-app-rewired
。我从来没有使用过Craco,所以我只能给予你一个配置的例子Rewired:重写.js
型
在这个例子中,
main.js
在electron/main.js
中,它将被捆绑为build/static/js/electron.main.js
。请注意,在构建时,您将得到错误:
型
这是因为CRA未配置为处理多个webpack配置。它不会中断进程,因此可以忽略(仅供参考)。
现在,要在窗口中加载应用程序,您可以使用用途:
型
在打包器配置中:
型
附加信息:
对于使用CRA创建的应用,您需要在
package.json
中的homepage
字段中指定为应用提供服务的路径:型
如果你忘记了这一点,你可能会在生产中得到一个空白页。