当前位置: 首页 > 知识库问答 >
问题:

电子反应生成不发射

商同
2023-03-14

我在试图把这两件事结合在一起的时候遇到了一些问题。

让我给你一些上下文:我正在尝试构建一个基于我在react中开发的web应用程序的桌面应用程序,它完全可以运行,react的构建过程没有任何错误或问题。问题来了,当我试图胶合电子+一个反应建成的项目。

我的结构如下:

  • /dist
  • /node_module
  • /react-mobx-router
    • /生成
      • /静态
        • /js
          • main.05ef4655.js
          • main.9d8eFafe.css

          在index.js中,我有以下代码,这基本上是Electronic demo应用程序的样本样板代码:

          'use strict';
          const electron = require('electron');
          
          const app = electron.app;
          
          // adds debug features like hotkeys for triggering dev tools and reload
          require('electron-debug')();
          
          // prevent window being garbage collected
          let mainWindow;
          
          function onClosed() {
              // dereference the window
              // for multiple windows store them in an array
              mainWindow = null;
          }
          
          function createMainWindow() {
              const win = new electron.BrowserWindow({
                  width: 1280,
                  height: 720,
                  minWidth: 1280,
              minHeight: 720
              });
          
              win.loadURL(`file://${__dirname}/react-mobx-router/build/index.html`);
              //win.loadURL(`http://localhost:3000`);
              win.on('closed', onClosed);
          
              return win;
          }
          
          app.on('window-all-closed', () => {
              if (process.platform !== 'darwin') {
                  app.quit();
              }
          });
          
          app.on('activate', () => {
              if (!mainWindow) {
                  mainWindow = createMainWindow();
              }
          });
          
          app.on('ready', () => {
              mainWindow = createMainWindow();
          });
          

          我还必须手动更改react build index.html中的一些路径,这样看起来就像:

          而不是:

          第二个得到的错误如下:

          file:///D:/static/css/main.9d8efafe.css Failed to load resource: net::ERR_FILE_NOT_FOUND
          
          main.05ef4655.js Failed to load resource: net::ERR_FILE_NOT_FOUND 
          

          关键是,当我用yarn start启动电子应用程序(改变了我之前告诉过你的路径)时,它启动时没有任何错误或问题,只是一个空白屏幕,如果我去找文件,它们是正确的,代码在里面,捆绑在一起,所有的react-create-app的东西做的。

          这是Electron附带的package.json的默认配置,我没有修改:

          {
            "name": "app",
            "productName": "App",
            "version": "0.0.0",
            "description": "",
            "license": "MIT",
            "repository": "user/repo",
            "author": {
              "name": "",
              "email": "",
              "url": ""
            },
            "scripts": {
              "test": "xo",
              "start": "electron .",
              "build": "electron-packager . --out=dist --asar --overwrite --all"
            },
            "files": [
              "index.js",
              "index.html",
              "index.css"
            ],
            "keywords": [
              "electron-app",
              "electron"
            ],
            "dependencies": {
              "electron-debug": "^1.0.0"
            },
            "devDependencies": {
              "devtron": "^1.1.0",
              "electron-packager": "^8.0.0",
              "electron": "^1.0.1",
              "xo": "^0.16.0"
            },
            "xo": {
              "esnext": true,
              "envs": [
                "node",
                "browser"
              ]
            }
          }
          

          这也是我的React项目的package.json:

          {
            "name": "react-mobx",
            "version": "0.1.0",
            "private": true,
            "devDependencies": {
              "custom-react-scripts": "0.0.23",
              "mobx-react-devtools": "^4.2.11"
            },
            "dependencies": {
              "mobx": "^3.1.4",
              "mobx-react": "^4.1.2",
              "mobx-react-router": "latest",
              "react": "^15.4.2",
              "react-dom": "^15.4.2",
              "react-router": "latest"
            },
            "scripts": {
              "start": "react-scripts start",
              "build": "react-scripts build",
              "test": "react-scripts test --env=jsdom",
              "eject": "react-scripts eject"
            }
          }
          

          请注意,如果我不使用电子,React应用程序是完全功能的。

          所以我请求你们的智慧,伙计们。我需要点光这样我就可以继续这个项目了。希望你能在这个问题上帮助我,我已经提供了足够的信息给你。如果你需要更多的信息,尽管告诉我。

          热烈的问候,亚历克斯。

共有1个答案

上官和韵
2023-03-14

我不是React英雄(很长一段时间),但我能够运行,热重新加载和释放构建使用这个样板的模式:Electrone-ES6-React。我在main.js(下面)中添加了一些用于构建的条件代码。毫无疑问,有更好的解决办法。

您肯定需要将React Package.json与Electron的合并。

var isDev = process.env.APP_DEV ? (process.env.APP_DEV.trim() == "true") : false;

if (isDev) {
  // only add this during development
  require('electron-reload')(__dirname, {
    electron: path.join(__dirname, 'node_modules', '.bin', 'electron')
  });
}

package.json

{
  "name": "electron-es6-react",
  "version": "0.1.0",
  "description": "template",
  "license": "MIT",
  "production": false,
  "version-string": {
    "CompanyName": "Cool Co.",
    "FileDescription": "template",
    "OriginalFilename": "template",
    "ProductName": "template",
    "InternalName": "template"
  },
  "main": "main.js",
  "scripts": {
    "start": "APP_DEV=true electron -r babel-register .",
    "package-mac": "electron-packager . --overwrite --tmpdir=false --platform=darwin --arch=x64  --prune=true --out=release-builds",
    "package-win": "electron-packager . --overwrite --tmpdir=false --asar=true --platform=win32 --arch=ia32 --prune=true --out=release-builds"
  },
  "dependencies": {
    "babel-preset-es2015": "^6.3.13",
    "babel-preset-react": "^6.3.13",
    "babel-register": "^6.3.13",
    "fs-jetpack": "^0.12.0",
    "react": "^15.3.2",
    "react-dom": "^15.3.2",
    "react-images": "^0.5.2"
  },
  "devDependencies": {
    "electron": "^1.4.3",
    "electron-packager": "^8.5.2",
    "electron-reload": "^1.1.0"
  }
}
 类似资料:
  • 问题内容: 使用react和electronic创建桌面应用程序。我想从react组件中调用main.js电子方法。 main.js 如何克服这个问题? 问题答案: 在您的Renderer.js 在您的main.js 这是在主进程与渲染进程之间进行通信的最简单方法。 但是我认为您将使用以下方法将主过程的结果发送到渲染器 因此,这意味着您正在通过IPC通道将结果从main发送到渲染器。并且您应该在渲

  • GitBook不仅可以生成静态网站,也可以将内容输出为电子书(ePub,Mobi,PDF)格式。 #生成PDF文件 $ gitbook pdf ./ ./mybook.pdf #生成ePub文件 $ gitbook epub ./ ./mybook.epub #生成Mobi文件 $ gitbook mobi ./ ./mybook.mobi 安装ebook-convert ebook-con

  • Raushane@Raushane:~/BigBuilder/Android$./Gradlew assembleRelease 失败:生成失败,出现异常。 > 其中:设置文件'/home/raushang/bigbuilder/Android/Settings.gradle'行:4 有人能建议一下现在该做什么吗。我是新来的本地人。

  • 我正在尝试生成我的第一个.apk,并且在过去几天中遇到了错误。我在stack overflow和github上搜索ans,但没有任何帮助 根据这里的说明,我可以构建调试版本,但是当运行<code>gradlew assembleerelease</code>时,我会出错 E:\p1\placementScript\android\app\build\intermediates\res\merged

  • 笔试+初试+复试,复试是技术二面和hr面结合 笔试9.21 题目内容:计算机基础+SQL+两道编程 SQL是MySQL经典面试题原题 编程一道是二分查找寻找有序数组插入位置,另一道是实现固定大小内存块的内存池,比较坑的是没有测试程序 初试9.24: extern关键字 看过哪些技术书籍和网站 成绩排名 哈希表的实现原理 操作系统内存管理 在项目中如何进行性能分析的 数据库的范式 进程间通信方式,哪

  • 一共15min,全在问简历,每个项目都问到了。 复盘 面试官说我项目太简单,但说法比较委婉。(比携程面试官委婉,啊哈哈哈哈) offer 拒。没有HR面,直接offer#恒生电子##实习#