如何在Electron中集成和运行现有的ReactJS应用程序

穆罕默德·汉南

例如,我有一个ReactJS应用程序:https ://iaya-664f3.firebaseapp.com/您可以在HTML源代码中看到该bundle.js文件。

我尝试使用Electron将其作为桌面应用程序运行,该应用程序应在Chrome窗口中启动此Web应用程序,但无法正常工作。

以下是我的主要React应用程序文件app.js位于根目录中。但是编译的文件bundle.js,并index.html./public/目录中。

./app.js

import React, {Component} from 'react';
import ReactDOM from 'react-dom';
import { Router, Route, browserHistory } from 'react-router';
import routes from './routes';

import {Provider} from "react-redux";
import { createStore, applyMiddleware } from 'redux';
import ReduxPromise from 'redux-promise';
import rootReducer from './reducers/index';

const store = applyMiddleware(ReduxPromise)(createStore)(rootReducer);

ReactDOM.render(  <Provider store={store}>
                    <Router history={browserHistory}  routes={routes} />  
                </Provider> , 

                document.getElementById('react-app'));

./index.js

在此文件中,我将我的应用程序嵌入到Electron中以在铬中运行。

var app = require("./app");
var BrowserWindow = require("browser-window");

// on electron has started up , booted up, everything loaded (Chromium ,goen, live)
app.on("ready", function(){
    var mainWindow = new BrowserWindow({
        width:800,
        height:600
    });
    mainWindow.loadUrl("file://" + __dirname+ "/public/index.html");
});

但这给import React from 'React'我的在线错误./app.js

因此,我认为,我应该只给./public/index.html要加载的文件,其中包括已编译的文件bundle.js但我想知道,这将如何满足生产线的app.on("ready", function(){预期app

此外,我也尝试了以下方法,./index.js但它给出了其他一些错误。

const electron = require('electron');

// Module to control application life.
const app = electron.app;

// Module to create native browser window.
const BrowserWindow = electron.BrowserWindow;

const path = require('path');
const url = require('url');

// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let mainWindow;

function createWindow () {
    // Create the browser window.
    mainWindow = new BrowserWindow({width: 800, height: 600});

    // and load the index.html of the app.
    /*mainWindow.loadURL(url.format({
        pathname: path.join(__dirname, 'public/index.html'),
        protocol: 'file:',
        slashes: true
    }));*/
    mainWindow.loadURL("file://" + __dirname+ "/public/index.html");

    // Open the DevTools.
    mainWindow.webContents.openDevTools();

    // Emitted when the window is closed.
    mainWindow.on('closed', function () {
        // Dereference the window object, usually you would store windows
        // in an array if your app supports multi windows, this is the time
        // when you should delete the corresponding element.
        mainWindow = null;
    });
}

app.on('ready', createWindow);

// Quit when all windows are closed.
app.on('window-all-closed', function () {
    // On OS X it is common for applications and their menu bar
    // to stay active until the user quits explicitly with Cmd + Q
    if (process.platform !== 'darwin') {
        app.quit();
    }
});

app.on('activate', function () {
    // On OS X it's common to re-create a window in the app when the
    // dock icon is clicked and there are no other windows open.
    if (mainWindow === null) {
        createWindow();
    }
});
穆罕默德·汉南

基本上,这很简单。电子的作用就像台式铬包装纸一样,在台式铬内显示您任何(任何)类型的网页。

因此,例如,我们要显示http://www.google.com,然后您只需将此URL传递给loadURL()函数即可。

这是代码的工作副本(在问题中提出):

const electron = require('electron');
  // Module to control application life.
const app = electron.app;
  // Module to create native browser window.
const BrowserWindow = electron.BrowserWindow;

app.on('ready', function(){
    var mainWindow = new BrowserWindow({width: 800, height: 600});

    mainWindow.loadURL("http://localhost:8080/");  // option1: (loading a local app running on a local server)

    //mainWindow.loadURL("https://iaya-664f3.firebaseapp.com");  // option2: (loading external hosted app)

    // loading developer tool for debugging
    mainWindow.webContents.openDevTools();
});

我希望这将为许多新来的人们澄清混乱Electron因此,最后的话就是Electron只加载现有的和正在运行的Web应用程序。它不编译,不充当服务器。它只是一个盒子,您可以在其中放置任何东西,并赋予其桌面外观,例如菜单,桌面通知,本地文件系统访问权限等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在现有的Rails引擎中生成虚拟应用程序

来自分类Dev

如何在chrome应用程序中加入现有的活动播放媒体

来自分类Dev

如何在现有的angularjs应用程序中包含angular-bootstrap?

来自分类Dev

如何在现有的spring-mvc应用程序中集成spring-integration?

来自分类Dev

如何在现有的Web应用程序中逐步淘汰密码哈希算法?

来自分类Dev

如何在现有的Windows应用程序中获得ATL支持

来自分类Dev

如何将新的Qt窗口与现有的X应用程序集成在一起?

来自分类Dev

如何在Python Django应用程序中集成Paypal

来自分类Dev

如何在Android移动应用程序中集成opentok?

来自分类Dev

如何在现有的Django Web应用程序之上集成wordpress前端

来自分类Dev

如何在现有的node.js express设置中集成rate-limiter-flexible?

来自分类Dev

在ReactJS应用程序中集成Xero会导致错误

来自分类Dev

如何在WPF应用程序中集成吐司通知?

来自分类Dev

如何在我的应用程序中集成Tapatalk

来自分类Dev

Facebook:如何在页面中集成应用程序图标?

来自分类Dev

如何在现有的Windows应用程序中获得ATL支持

来自分类Dev

如何在GWT应用程序中集成Spring角色

来自分类Dev

如何将现有的angular js应用程序集成到Laravel 5中

来自分类Dev

如何在现有的Apple Watch应用程序中添加和运行Glance?

来自分类Dev

如何在Symfony2应用程序中使用现有的Web服务?

来自分类Dev

如何在现有的 codeigniter 项目中集成 CDN

来自分类Dev

如何将新的 ionic 主题集成到现有的 ionic 应用程序中?

来自分类Dev

如何将 React 与非平凡的 AngularJS 应用程序和现有的 grunt 配置集成?

来自分类Dev

我如何开始将 reactJs 合并到现有的 Laravel 应用程序中

来自分类Dev

如何在 Angular 应用程序中集成 Bootstrap CSS

来自分类Dev

如何在我现有的 Angularjs 应用程序中进行用户访问控制

来自分类Dev

如何在我的应用程序中集成 google 登录和 firebase?

来自分类Dev

如何在 ReactJs 应用程序中集成 moengage?

来自分类Dev

如何在 Android 应用程序中集成搜索功能

Related 相关文章

  1. 1

    如何在现有的Rails引擎中生成虚拟应用程序

  2. 2

    如何在chrome应用程序中加入现有的活动播放媒体

  3. 3

    如何在现有的angularjs应用程序中包含angular-bootstrap?

  4. 4

    如何在现有的spring-mvc应用程序中集成spring-integration?

  5. 5

    如何在现有的Web应用程序中逐步淘汰密码哈希算法?

  6. 6

    如何在现有的Windows应用程序中获得ATL支持

  7. 7

    如何将新的Qt窗口与现有的X应用程序集成在一起?

  8. 8

    如何在Python Django应用程序中集成Paypal

  9. 9

    如何在Android移动应用程序中集成opentok?

  10. 10

    如何在现有的Django Web应用程序之上集成wordpress前端

  11. 11

    如何在现有的node.js express设置中集成rate-limiter-flexible?

  12. 12

    在ReactJS应用程序中集成Xero会导致错误

  13. 13

    如何在WPF应用程序中集成吐司通知?

  14. 14

    如何在我的应用程序中集成Tapatalk

  15. 15

    Facebook:如何在页面中集成应用程序图标?

  16. 16

    如何在现有的Windows应用程序中获得ATL支持

  17. 17

    如何在GWT应用程序中集成Spring角色

  18. 18

    如何将现有的angular js应用程序集成到Laravel 5中

  19. 19

    如何在现有的Apple Watch应用程序中添加和运行Glance?

  20. 20

    如何在Symfony2应用程序中使用现有的Web服务?

  21. 21

    如何在现有的 codeigniter 项目中集成 CDN

  22. 22

    如何将新的 ionic 主题集成到现有的 ionic 应用程序中?

  23. 23

    如何将 React 与非平凡的 AngularJS 应用程序和现有的 grunt 配置集成?

  24. 24

    我如何开始将 reactJs 合并到现有的 Laravel 应用程序中

  25. 25

    如何在 Angular 应用程序中集成 Bootstrap CSS

  26. 26

    如何在我现有的 Angularjs 应用程序中进行用户访问控制

  27. 27

    如何在我的应用程序中集成 google 登录和 firebase?

  28. 28

    如何在 ReactJs 应用程序中集成 moengage?

  29. 29

    如何在 Android 应用程序中集成搜索功能

热门标签

归档