【问题标题】:Window value is undefined - Electron js窗口值未定义 - Electron js
【发布时间】:2020-07-23 05:29:57
【问题描述】:

我正在创建一个电子应用程序,并试图找到将我的代码拆分为不同模块以实现可维护性的方法。我有我的 main.js 文件,还有另一个我为操作窗口创建的文件 (windowManipulation.js)。该文件包含创建窗口所需的所有变量和函数,并且该部分正在运行。

let window 1;
let window 2;

module.exports.createWindow1 = () => {
 window1 = new BrowserWindow({...})
}
...

在 main.js 我有:

const windowManipulation = require("./windowManipulation.js");
...

我能够很好地创建窗口;但是,创建窗口后,我无法使用 Javascript 关闭它们,因为窗口变量的值是“未定义”。我认为这是因为变量名称在 windowManipulation.js 文件中,而不是在 main.js 文件中,这意味着窗口创建得很好,但是我失去了对它们的所有引用。

解决此问题的最佳方法是什么?我可以将 windowManipulation.js 文件中的所有代码移动到 main.js 文件,但这会破坏创建模块以使代码更易于维护的目的。您如何处理 ElectronJS 应用程序中的窗口,以便您仍然可以拥有一些模块化?

【问题讨论】:

  • window 和 1/2 之间的空格是偶然的吗?当您说 window 变量未定义时,您是在谈论 window1 变量吗?你是怎么关窗的呢
  • 是的,这是我在这里输入的错误。对不起。我实际上指的是任何窗户。我只是以 window1 和 window2 为例。我正在尝试从 windowManipulation.js 关闭窗口,例如 module.exports.closeWindow1 = () => { window1.close()} ,但它没有执行它,因为它说 window1 未定义

标签: node.js electron


【解决方案1】:

这就是我决定解决它的方法。我将窗口定义放在 main.js 文件中,然后在该文件中创建一个函数,该函数调用该函数在 windowManipulation 文件中创建窗口。该文件返回实际的窗口。

main.js

...
const openWindow = require("./pathToFile")

let window1;
...
module.exports.createWindow1 = () => {
     window1 = openWindow.openWindow1();
}

windowManipulation.js

...
module.exports.openWindow1 = () => {
     let window1 = new BrowserWindow({
          ...
     })

     return(window1)
}
...

现在,如果我想操作 window1,我可以从我的 main.js 轻松完成。

我希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 2021-08-11
    • 2021-08-03
    • 2017-10-01
    • 1970-01-01
    • 2018-11-14
    相关资源
    最近更新 更多