Я создал приложение реагирования и хочу обернуть его в электронном виде, чтобы запустить на win10, так как приложению требуется узел-последовательный порт.Все отлично работает в режиме разработки, но я не могу правильно запустить приложение в производственном режиме, т.е. в упакованном виде.Приложение запускается не на той странице, а изображения и файлы на дополнительных ресурсах загружаются неправильно, поскольку маршруты / пути не верны.
Сама упаковка работает нормально, но когда я запускаю файл .exe, приложение запускаетсяна 404-Route, который я реализовал в качестве перехвата всех в реакции-маршрутизатора.При входе в консоль Chrome, куда приложение фактически хотело пойти, я вижу следующий маршрут: pathname: "/C:/UserData/somefolder/otherfolder/dist/win-unpacked/resources/app.asar/build/index.html"
- что было бы правильно, если бы в начале не было этого /
.У меня есть некоторые файлы в папке extraResource, но я не могу получить доступ к этой папке в производственном / упакованном режиме, на вкладке источников в Chrome папка extraResources не является частью основного каталога приложения, но отображается отдельно, что означает, что она ожидаетсябыть под C:\
, как я могу настроить это правильно?
Как уже говорилось, в режиме разработки все работает нормально.Я думаю, что все начинается с правильного маршрута для точки входа, не может ли кто-нибудь дать мне подсказку, что мне нужно сделать, чтобы это работало?
Вот мой пакет. Json
{
"name": "app-name",
"version": "0.1.0",
"private": true,
"main": "./public/electron.js",
"author": "CG",
"description": "description",
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"electron": "set ELECTRON_START_URL=http://localhost:3000 && electron .",
"rebuild": "./node_modules/.bin/electron-rebuild -f -w serialport",
"electron-pack": "build --win --x64 --dir"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
],
"devDependencies": {
"electron": "^4.0.4",
"electron-packager": "^13.1.1",
"electron-rebuild": "^1.8.4"
},
"build": {
"appId": "com.wmt.wmt-1",
"files": [
"build/**/*",
"node_modules/**/*"
],
"directories":{
"buildResources": "public"
},
"extraResources": [
{
"from": "./public/extraResources/",
"to": "extraResources",
"filter": [
"**/*"
]
}
]
},
"win": {
"icon": "/public/img/icon.png"
},
"homepage": "./"
}
Вот файл electron.js
:
const {app, BrowserWindow, protocol} = require('electron')
const path = require('path');
const url = require('url');
let mainWindow
const startUrl = process.env.ELECTRON_START_URL || url.format({
pathname: path.join(__dirname, '/../build/index.html'),
protocol: 'file:',
slashes: true,
});
function createWindow () {
// Create the browser window.
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
webSecurity: false
}
});
mainWindow.loadURL(startUrl);
// Open the DevTools.
mainWindow.webContents.openDevTools()
// Emitted when the window is closed.
mainWindow.on('closed', function () {
mainWindow = null
})
}
app.on('ready', () => {
createWindow()
});