Ecmascript 6 无法读取未定义的上的属性。电子浏览器窗口对象
我正试图学习电子,但在我使用的Pluralsight教程中遇到了一个问题。我安装了“电子预建”模块。每次运行“npm启动”时都会出现错误。窗口会按预期打开,但对话框中弹出的错误消息会破坏整个过程。以下是错误: 未捕获异常: TypeError:无法读取未定义的at对象的属性“on” 这条长长的错误消息还有更多内容,但它不允许我复制和粘贴,其余的错误只是指main.js代码第14行中假定问题的位置。这是我的main.js文件:Ecmascript 6 无法读取未定义的上的属性。电子浏览器窗口对象,ecmascript-6,electron,Ecmascript 6,Electron,我正试图学习电子,但在我使用的Pluralsight教程中遇到了一个问题。我安装了“电子预建”模块。每次运行“npm启动”时都会出现错误。窗口会按预期打开,但对话框中弹出的错误消息会破坏整个过程。以下是错误: 未捕获异常: TypeError:无法读取未定义的at对象的属性“on” 这条长长的错误消息还有更多内容,但它不允许我复制和粘贴,其余的错误只是指main.js代码第14行中假定问题的位置。这是我的main.js文件: const electron = require('electron'
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文档,我知道这是错误的:
所以我认为mainWindow的值没有被设置。我可以在声明时尝试使用新的BrowserWindow对象实例化mainWindow,但如果我尝试这样做,会收到一条错误消息,表明我只能在ready函数中实例化BrowserWindow对象。您必须了解回调在node.js中是如何工作的,回调是异步执行的,在启动
app.onready
之前,mainWindow
仍然未定义,因此let mainWindow
的声明将undefined
分配给mainWindow
,将mainWindow.on(“关闭”)和“…”
放入app.on(“就绪”)
事件处理程序。这样做
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脚本上调用
节点而不是electron
,也会发生此错误。您的npm start
脚本应该调用npx-electron.
,因此请尝试先运行npx-electron.
或npx-electron main.js
。请参见此处的相关问题: