无法读取未定义的属性。Electron BrowserWindow 对象
我正在尝试学习 Electron,但遇到了我正在使用的 Pluralsight 教程的问题。我安装了“electron-prebuilt”模块。每次运行“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 对象。
您必须了解回调在 node.js 中的工作方式,回调是异步执行的,在
app.onready
触发之前,
mainWindow
仍未定义,因此
let mainWindow
的声明将
undefined
分配给
mainWindow
,将
mainWindow.on("closed", ....)
带入
app.on("ready")
事件处理程序。执行此操作
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
})
})
如果您在 electron 脚本中只是调用
node
而不是
electron
,也会出现此错误。您的
npm start
脚本应该调用
npx electron .
,因此请先尝试运行
npx electron .
或
npx electron main.js
。请在此处查看相关问题: