electron - 将 create-react-app 与 electro-builder 结合使用

标签 electron create-react-app electron-builder

我使用create-react-app创建了一个简单的应用程序,并对package.json进行了以下更改

{
  "main": "public/electron.js",
  "homepage": "./",
  "scripts": {
    "start": "node scripts/start.js",
    "electron-dev": "concurrently \"BROWSER=none yarn start\" \"wait-on http://localhost:3000 && electron .\"",
    "preelectron-pack": "yarn build",
    "electron-pack": "electron-builder build -m",
    "build": "node scripts/build.js",
    "prettify": "prettier --write \"src/**/*.js\"",
    "precommit": "yarn prettify",
    "test": "node scripts/test.js --env=jsdom"
  }
}

公共(public)文件夹中的electron.js文件

const electron = require('electron')
const app = electron.app
const BrowserWindow = electron.BrowserWindow

const path = require('path')
const url = require('url')
const isDev = require('electron-is-dev')

let mainWindow

function createWindow() {
  mainWindow = new BrowserWindow({
    width: 1364,
    height: 768,
    webPreferences: {
      webSecurity: false
    }
  })
  mainWindow.setMinimumSize(1364, 768)
  mainWindow.loadURL(
    isDev
      ? 'http://localhost:3000'
      : url.format({
          pathname: path.join(__dirname, '../build/index.html'),
          protocol: 'file:',
          slashes: true
        })
  )
  mainWindow.webContents.openDevTools()
  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()
  }
})

在运行脚本 electron-pack 时,它给了我这个错误: 不允许加载本地资源file:///index.html

可能的问题是什么?

react-scripts版本:1.1.5
Electron 构建器版本:20.28.2

最佳答案

我解决了。

问题出在 react-routerBrowserRouter 上。我必须将其更改为 HashRouter,现在所有文件和路由都可以正确加载。

关于electron - 将 create-react-app 与 electro-builder 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52093573/

相关文章:

reactjs - 为什么没有在我的package.json中读取构建?

javascript - 如何将javascript var注入(inject)css

react-router - react-snap 和 react-router 一起出现问题

vue.js - 我有Electron Project,我想在其中使用vueJS

reactjs - "React must be in scope when using JSX"(在index.js上有"window.React = React"的react/react-in-jsx-scope)

reactjs - 如何在 package.json 中使用 $npm_config_?

javascript - Electron 公证失败,原因是二进制文件使用的10.9 SDK版本早于SDK

macos - Info.plist表示iOS应用程序,但提交.pkg

javascript - 如何使用 Electron 访问生产中的 sqlite3 数据库文件?

electron - Electron 和窗口之间的 IPC 通信不起作用