如何在类中正确要求Electron BrowserWindow

SpiritBH

我对电子,nodejs和javascript还是很陌生,但是我一直在稳定地研究这些东西以获得不错的结果,但是我在这里遇到了一些麻烦,并且在寻找类似问题方面也没有走运。但是,我确实找到了一个以相同方式使用require的示例,这使我相信这应该可以正常工作。

在电子快速入门中,require('electron')用于加载BrowserWindow类。所以现在我在课堂上尝试做同样的事情。我尝试将模块加载到类的变量中,然后在CreateWindow中使用它。这将导致“ this.BrowserWindow不是构造函数”异常。如果我从Main.js发送模块(该模块以与电子快速入门中完全相同的方式加载模块)作为参数直接传递给我的WindowManager,则它确实起作用。如果没有更好的方法可以做到这一点,我认为应该/应该这样做。

最后,我非常有信心模块确实会以某种方式,形状或形式加载,因为尝试要求无效的模块会给我一个“找不到模块”异常。

所以我的问题是,当我期望与电子快速入门中的行为相同时,为什么会出现异常,以及如何正确/优雅地对其进行修复。

我的课:

class WindowManager {

    constructor(CCC) {
        this.BrowserWindow = require('electron');
        this.ListManager = new (require('./ListManager.js').ListManager)(CCC);
        this.ListManager.RequestList("Root");
    }

    createWindow(BrowserWindow) {
        // Create the browser window.
        this.mainWindow = new this.BrowserWindow({
            height: 600,
            width: 800,
            webPreferences: {
                preload: 'preload.js',
                nodeIntegration: true
            }
        });

        // and load the index.html of the app.
        this.mainWindow.loadFile('index.html')

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

        // Emitted when the window is closed.
        this.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.
            this.mainWindow = null
        })
    }
}

电子快速入门

// Modules to control application life and create native browser window
const {app, BrowserWindow} = require('electron')
const path = require('path')

// 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,
    webPreferences: {
    preload: path.join(__dirname, 'preload.js')
    }
})

// and load the index.html of the app.
mainWindow.loadFile('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
})
}
托托头

“电子快速入门”示例代码使用ECMAScript 6对象解构语法(为了简洁和方便起见)。

const {app, BrowserWindow} = require('electron')

等效于:

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

因此,在class的构造函数中WindowManager,该行为:

this.BrowserWindow = require('electron');

应该改为:

this.BrowserWindow = require('electron').BrowserWindow;

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Electron BrowserWindow中进行全文本搜索

来自分类Dev

如何获取调用事件的BrowserWindow实例?

来自分类Dev

如何使用Electron中的BrowserWindow对象执行脚本?

来自分类Dev

如何从电子应用程序的BrowserWindow中获取DOM树?

来自分类Dev

如何从电子主进程全局访问BrowserWindow Javascript?

来自分类Dev

如何从原子电子的BrowserWindow获取`move`事件的属性?

来自分类Dev

在Electron 1.X版中,如何从一个BrowserWindow发出事件并在另一个BrowserWindow中使用它?

来自分类Dev

在Electron 1.X版中,如何从一个BrowserWindow发出事件并在另一个BrowserWindow中使用它?

来自分类Dev

require('electron') 和 require('electron').remote 获取 BrowserWindow 的区别是什么?

来自分类Dev

Electron&ReactJS,使用BrowserWindow进行GitHub oAuth身份验证

来自分类Dev

启动 Electron.exe 或电子项目 - 没有 BrowserWindow 打开

来自分类Dev

监视 electron.BrowserWindow 构造函数并返回一个带有 jasmine 的模拟对象

来自分类Dev

电子用户界面BrowserWindow冻结了主BrowserWindow

来自分类Dev

电子,从 BrowserWindow 打印到PDF

来自分类Dev

如何在TypeScript中正确要求并声明节点库类型?

来自分类Dev

电子:将原始html注入BrowserWindow

来自分类Dev

在TypeScript中导入electronic.BrowserWindow

来自分类Dev

无法从BrowserWindow页面导入电子模块

来自分类Dev

编码的 UI BrowserWindow 投射到 Selenium InternetExplorerDriver

来自分类Dev

无法用电子打开我的 BrowserWindow?

来自分类Dev

给 BrowserWindow 时间来应用样式更改

来自分类Dev

如何在类库中正确调用P / Invoke方法?

来自分类Dev

如何在Grails域类中正确设置属性值

来自分类Dev

如何在Pygame中正确继承Surface类

来自分类Dev

如何在Typescript中正确键入React ErrorBoundary类组件?

来自分类Dev

如何在Perl类中正确使用哈希

来自分类Dev

PHP如何在类中正确移动函数

来自分类Dev

如何在ref类中正确存储HWND?

来自分类Dev

如何在 PHP 的类中正确构造数组?

Related 相关文章

  1. 1

    在Electron BrowserWindow中进行全文本搜索

  2. 2

    如何获取调用事件的BrowserWindow实例?

  3. 3

    如何使用Electron中的BrowserWindow对象执行脚本?

  4. 4

    如何从电子应用程序的BrowserWindow中获取DOM树?

  5. 5

    如何从电子主进程全局访问BrowserWindow Javascript?

  6. 6

    如何从原子电子的BrowserWindow获取`move`事件的属性?

  7. 7

    在Electron 1.X版中,如何从一个BrowserWindow发出事件并在另一个BrowserWindow中使用它?

  8. 8

    在Electron 1.X版中,如何从一个BrowserWindow发出事件并在另一个BrowserWindow中使用它?

  9. 9

    require('electron') 和 require('electron').remote 获取 BrowserWindow 的区别是什么?

  10. 10

    Electron&ReactJS,使用BrowserWindow进行GitHub oAuth身份验证

  11. 11

    启动 Electron.exe 或电子项目 - 没有 BrowserWindow 打开

  12. 12

    监视 electron.BrowserWindow 构造函数并返回一个带有 jasmine 的模拟对象

  13. 13

    电子用户界面BrowserWindow冻结了主BrowserWindow

  14. 14

    电子,从 BrowserWindow 打印到PDF

  15. 15

    如何在TypeScript中正确要求并声明节点库类型?

  16. 16

    电子:将原始html注入BrowserWindow

  17. 17

    在TypeScript中导入electronic.BrowserWindow

  18. 18

    无法从BrowserWindow页面导入电子模块

  19. 19

    编码的 UI BrowserWindow 投射到 Selenium InternetExplorerDriver

  20. 20

    无法用电子打开我的 BrowserWindow?

  21. 21

    给 BrowserWindow 时间来应用样式更改

  22. 22

    如何在类库中正确调用P / Invoke方法?

  23. 23

    如何在Grails域类中正确设置属性值

  24. 24

    如何在Pygame中正确继承Surface类

  25. 25

    如何在Typescript中正确键入React ErrorBoundary类组件?

  26. 26

    如何在Perl类中正确使用哈希

  27. 27

    PHP如何在类中正确移动函数

  28. 28

    如何在ref类中正确存储HWND?

  29. 29

    如何在 PHP 的类中正确构造数组?

热门标签

归档