gpt4 book ai didi

node.js - 为什么变量未定义? - Node - ElectronJs

转载 作者:太空宇宙 更新时间:2023-11-03 23:47:43 24 4
gpt4 key购买 nike

我正在创建一个 Electron 应用程序,我试图将我的代码拆分为不同的脚本,以使其更易于管理;然而,由于某种原因,我的脚本中的变量之一不断返回未定义,我不明白为什么。我已经在 SO 上检查过类似的问题,但没有找到答案。

我有一个名为 windowManipulation.js 的文件,这是其中的一部分:

let signInWindow;

module.exports.createSignInWindow = () => {
signInWindow = new BrowserWindow({
show: false,
width: 1500,
height: 800,
webPreferences: {
nodeIntegration: true
}
});

signInWindow.loadFile(`views/logIn.html`)

signInWindow.once("ready-to-show", () => {
signInWindow.show();
});

signInWindow.on("close", () => {
signInWindow = null;
});

signInWindow.on('crashed', () => {
app.relaunch();
app.exit(0);
})
}

module.exports.closeSignInWindow = () => {
signInWindow.close();
signInWindow = null;
}

现在,当我调用函数来创建窗口时,它会毫无问题地创建窗口。但是当我调用函数关闭它时,它说signInWindow未定义。

如果在创建signInWindow时应该设置它,为什么它是未定义的?我做错了什么?

最佳答案

听起来 createSignInWindowcloseSignInWindow 是从不同的进程调用的。作为不同的进程,它们各自拥有自己的内存,并且各自独立地执行该文件。因此,如果您在主进程中创建窗口,并从窗口进程中关闭它,窗口进程将不会认为该变量存在。

所以听起来您需要使用 ipcRenderer从渲染到主进程进行通信,以便它可以为您关闭窗口。

它会是这样的:

// renderer
const { ipcRenderer } = require('electron')
ipcRenderer.send('close-signin')

// main
const { ipcMain } = require('electron')
ipcMain.on('close-signin', closeSignInWindow)

关于node.js - 为什么变量未定义? - Node - ElectronJs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60458235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com