Новый BrowserWindow loadFile не определяется при веб-упаковке - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь использовать webpack 4. для моего электронного приложения.

{
  "devDependencies": {
    "clean-webpack-plugin": "^0.1.19",
    "html-webpack-plugin": "^3.2.0",
    "webpack": "^4.18.0",
    "webpack-cli": "^3.1.0"
  },
  "dependencies": {
    "electron": "^2.0.9",
    "lodash": "^4.17.10"
  }
}

Мой webpack.config.js - это (заметьте, что цель - электронная):

const path = require('path');

module.exports = {
    mode: 'development',
    entry: {
        main: './main/index.js'
    },
    output: {
        filename: '[name].bundle.js',
        path: path.resolve(__dirname, 'dist')
    },
    target: 'electron-main'
}

Я сделал:

  1. npm init -y
  2. Добавлено в package.json "main": "dist/main.bundle.js".
  3. Создано ./main/index.js с содержимым быстрого запуска электрона -https://electronjs.org/docs/tutorial/first-app - (только что изменено требование импорта и путь к app / index.html):

    import { app, BrowserWindow } from 'electron'
    
    // 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 win;
    
    function createWindow() {
        // Create the browser window.
        win = new BrowserWindow({ width: 800, height: 600 });
    
        // and load the index.html of the app.
        win.loadFile('app/index.html');
    
        // Open the DevTools.
        win.webContents.openDevTools();
    
        // Emitted when the window is closed.
        win.on('closed', () => {
            // 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.
            win = null
        });
    }
    
    // This method will be called when Electron has finished
    // initialization and is ready to create browser windows.
    // Some APIs can only be used after this event occurs.
    app.on('ready', createWindow);
    
    // Quit when all windows are closed.
    app.on('window-all-closed', () => {
        // On macOS 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', () => {
        // On macOS 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 (win === null) {
            createWindow();
        }
    });
    
    // In this file you can include the rest of your app's specific main process
    // code. You can also put them in separate files and require them here.
    
  4. Я создал dist/app/index.html с содержимым:

    Привет, мир!

    Hello World!

    Мы используем узел document.write (process.versions.node), Chrome document.write (process.versions.chrome) и Electron document.write (process.versions.electron).
  5. Я запускаю npx webpack и это успешно.

Однако, когда я делаю electron ., я получаю win.loadFile не определено.Вот скриншот:

https://i.imgur.com/mSJhK4y.png

1 Ответ

0 голосов
/ 01 июня 2019

Может быть, эта установка с Electron, React, Sass и Webpack 4 даст вам несколько идей ... https://github.com/wende60/Electron-Webpack4-React-Sass

привет, jo

...