网络打包时未定义新的BrowserWindow loadFile

时间:2018-09-11 13:18:46

标签: webpack electron webpack-4

我正在尝试将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. 使用电子快速入门的内容https://electronjs.org/docs/tutorial/first-app-创建了./main/index.js-(只是更改了要求,以导入并到达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 :(得分:-1)

也许使用Electron,React,Sass和Webpack 4进行此设置会给您一些想法... https://github.com/wende60/Electron-Webpack4-React-Sass

致谢,乔

相关问题