我正在使用电子2.0.7,并且我想通过使用app.makeSingleInstance防止该应用程序的多个实例。
它可以工作,但是当我尝试运行该应用程序的另一个实例时,出现此错误:“在主进程中发生Javascript错误”弹出窗口。
这是main.ts中的代码:
function checkSingleInstance() {
// to make singleton instance
const isSecondInstance = app.makeSingleInstance((commandLine, workingDirectory) => {
// Someone tried to run a second instance, we should focus our window.
if (win) {
if (win.isMinimized()) {
win.restore();
win.focus();
}
}
});
if (isSecondInstance) {
app.quit();
return;
}
}
checkSingleInstance();
这是错误:
答案 0 :(得分:0)
完成发布的源代码后,我可以使用Electron 2.0.7很好地运行它。
您看到的错误可能源于代码的其他部分。根据错误消息判断,检查是否在某处导入名称为screen
的模块。
这是您的源代码,已完成MCVE:
const {app, BrowserWindow} = require('electron')
let win = null
console.log(`Node ${process.versions.node}, Chrome ${process.versions.chrome}, Electron ${process.versions.electron}`)
function checkSingleInstance() {
// to make singleton instance
const isSecondInstance = app.makeSingleInstance((commandLine, workingDirectory) => {
// Someone tried to run a second instance, we should focus our window.
if (win) {
if (win.isMinimized()) {
win.restore();
win.focus();
}
}
});
if (isSecondInstance) {
console.log("Exiting because another instance is running")
app.quit();
return;
}
}
checkSingleInstance();
app.on('ready', () => {
win = new BrowserWindow({width: 200, height: 200});
win.on('closed', () => win = null);
});
答案 1 :(得分:0)
尝试将app.quit()
替换为app.exit()
。
app.exit()
不会在退出之前发出事件,而app.quit()
会进行适当的清理。
很难确切说明错误的出处和原因,但是此问题已记录在here中。