Как правильно установить точку входа / стартовую страницу для электронного приложения на win10 в производственной сборке - PullRequest
1 голос
/ 07 апреля 2019

Я создал приложение реагирования и хочу обернуть его в электронном виде, чтобы запустить на win10, так как приложению требуется узел-последовательный порт.Все отлично работает в режиме разработки, но я не могу правильно запустить приложение в производственном режиме, т.е. в упакованном виде.Приложение запускается не на той странице, а изображения и файлы на дополнительных ресурсах загружаются неправильно, поскольку маршруты / пути не верны.

Сама упаковка работает нормально, но когда я запускаю файл .exe, приложение запускаетсяна 404-Route, который я реализовал в качестве перехвата всех в реакции-маршрутизатора.При входе в консоль Chrome, куда приложение фактически хотело пойти, я вижу следующий маршрут: pathname: "/C:/UserData/somefolder/otherfolder/dist/win-unpacked/resources/app.asar/build/index.html" - что было бы правильно, если бы в начале не было этого /.У меня есть некоторые файлы в папке extraResource, но я не могу получить доступ к этой папке в производственном / упакованном режиме, на вкладке источников в Chrome папка extraResources не является частью основного каталога приложения, но отображается отдельно, что означает, что она ожидаетсябыть под C:\, как я могу настроить это правильно?Chrome Sources Tab

Как уже говорилось, в режиме разработки все работает нормально.Я думаю, что все начинается с правильного маршрута для точки входа, не может ли кто-нибудь дать мне подсказку, что мне нужно сделать, чтобы это работало?

Вот мой пакет. 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()
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...