【发布时间】:2020-02-28 19:36:46
【问题描述】:
我正在创建一个 Electron 应用程序,并尝试将我的代码拆分为不同的脚本以使其更易于管理;但是,由于某种原因,我的脚本中的一个变量不断返回 undefined ,我不知道为什么。我已经在 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时设置,为什么它是未定义的?我做错了什么?
【问题讨论】:
-
一个类在这里可能会更好用,并且将
signInWindow限定为该类,因此两种方法都引用了同一个变量 -
你是否在同一个进程中调用
createSignInWindow和closeSignInWindow(意味着渲染器与主进程)? -
@AlexWayne 我觉得你打中了我的男人的头。我刚刚意识到我正在从渲染器调用 closeSignInWindow ...但是现在弄清楚这一点产生了一个不同的问题,但它与这个问题有关:我有我的文件 windowManipulation.js,我如何从渲染器?我是否只是在主进程中创建一个函数,调用 windowManipulation.js 中的 closeSignInWindow 函数,然后我只是从渲染器中调用主进程中的这个函数?