我正在尝试学习Electron,但是我遇到了正在使用的Pluralsight教程的问题。我安装了'电子预制'模块。每次运行“npm start”时都会出错。窗口按预期打开,但是在对话框中弹出的错误消息会破坏整个事情。这是错误:
未捕获的例外情况: TypeError:无法读取Object上未定义的属性'on'。
还有更长的错误消息,但它不会让我复制和粘贴,其余的错误只是指我main.js代码的第14行上假定问题的位置。这是我的main.js文件:
const electron = require('electron')
const app = electron.app
const BrowserWindow = electron.BrowserWindow
let mainWindow
app.on('ready', _ => {
mainWindow = new BrowserWindow({
height: 400,
width: 400
})
})
mainWindow.on('closed', _ => {
console.log('closed')
mainWindow = null
})
这表明我创建的BrowserWindow对象没有“on”方法,但根据Electron文档,我知道这是假的:
https://electronjs.org/docs/api/browser-window
所以我认为mainWindow的值没有被设置。我可以尝试在我声明它时使用新的BrowserWindow对象来实例化mainWindow,但是如果我尝试指示我只能在就绪函数中实例化BrowserWindow对象,我会收到一条错误消息。
答案 0 :(得分:2)
你必须了解回调如何在node.js中工作,回调是异步执行的,在app.onready
触发之前,mainWindow
仍未定义,因此let mainWindow
的声明分配{{1}转到undefined
,将mainWindow
带入mainWindow.on("closed", ....)
事件处理程序。这样做
app.on("ready")
答案 1 :(得分:1)
如果您只是在电子脚本上调用node
而不是electron
,也会发生此错误。您的npm start
脚本应改为调用npx electron .
,因此请尝试先运行npx electron .
或npx electron main.js
。在此处查看此相关问题: