我有一个带有以下代码的 typescript 文件 main.dev.ts:
主要开发者.ts
class Main {
mainWindow: BrowserWindow | null = null;
public getMainWindow(): BrowserWindow {
return this.mainWindow!
}
public init() {
app.on('ready', this.createWindow);
}
private async createWindow() {
this.mainWindow = new BrowserWindow({
show: false,
width: 1324,
height: 728,
backgroundColor: "#f0f2f5",
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true
}
});
this.mainWindow.loadURL(`file://${__dirname}/app.html`);
this.mainWindow.once('ready-to-show', () => {
setTimeout(() => {
this.mainWindow?.show();
this.mainWindow?.focus();
}, 150);
});
}
}
function createMainApp():Main{
const mainApp = new Main() ;
mainApp.init()
}
export const mainApp = createMainApp()
我有另一个 ts 文件导入这个导出的
mainApp
目的。另一个文件.ts
import {mainApp} from 'main.dev'
function myFun(){
const window = mainApp.window
//window is "null" even though the main window is already
}
函数myFun
在创建主窗口后(在同一个主进程中)被调用。这里的窗口对象是null
.我想当我们在第一个文件中导出对象时,导出对象的所有状态变化都会被保留。我在这里想念什么?
最佳答案
您的问题 :是的,导入的模块在文件上使用相同的实例。
给你的错误 : 问题是因为您初始化应用程序的方式,而不是因为导入的实例,createWindow
将使用 this
执行全局范围的(也许 window.mainWindow
是你需要的)。
ready
将被调用,并且即使应用程序已经“准备好”,也将始终被触发。 createWindow
函数应在 this
下执行主实例:public init() {
app.on('ready', this.createWindow.bind(this));
}
关于javascript - 导出一个 javascript 对象然后修改该导出文件中的该对象是否也会对导出的实例进行修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65592642/