Electron – “无法读取未定义的属性‘on’”;尝试重新安装,
2018-05-04
7331
我正在测试一个电子应用程序,但出现了这个有害错误:
“TypeError:无法读取未定义的属性‘on’”
我所做的研究指出,要么是模块安装不当,要么是语法问题,要么是将未定义的变量传递给 app.on,我怀疑问题可能是 Electron 被错误地指向(现在它被指向以 electron\dist\electron.exe 结尾的文件夹,我听说这可能不是正确的位置),但我不确定。
尽管检查了 require 命令、语法,重新检查、卸载和重新安装节点,但我似乎无法让这个该死的错误消失。是什么原因造成的?
const electron = require('electron');
const os = require('os');
const fs = require('fs');
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
var Mousetrap = require('mousetrap');
const path = require('path');
const url = require('url');
const ipc = electron.ipcMain;
let mainWindow;
function createWindow () {
// Create the browser window.
mainWindow = new BrowserWindow({width: 800, height: 600})
// and load the index.html of the app.
mainWindow.loadURL(url.format({
pathname: path.join(__dirname, 'index.html'),
protocol: 'file:',
slashes: true
/* More code in this and sub functions*/
}))
}
})
const preferencesManager = require('./preferencesManager');
/******
Send data to database given constructor created in preferencesManager
******/
// First instantiate the class because we want to turn the class into an object to be able to use.
const store = new Store({ //create a new getting and setting logic
//We'll call our data file 'user-preferences'
configName: 'user-preferences',
defaults: {
//800 x 600 is the default size of our window
windowBounds: { width: 800, height: 600}
}
});
// When our app is ready, we'll create our BrowserWindow
app.on('ready',function(){
//Set up a listener for what I've done in keycapture (in the renderer process)
//???
ipc.on('invokeAction', function(event, args){
/* Do some action */
});
});
1个回答
您可能正在尝试像使用节点应用程序一样运行您的应用程序:
$ node index.js
电子文件是二进制文件,而不是 JavaScript 文件,当您需要使用节点运行时,将没有对象来调用 electron.app,因此它解析为 null 并且不能具有属性。就像在 Electron.JS 的 入门 文档中一样,您必须像这样运行该应用程序:
更改您的 package.json 脚本会话并添加开始:
{
"scripts": {
"start": "electron ."
}
}
现在运行:
$ npm start
您发布的代码有错误,可能是复制和粘贴时出现版本错误,但它应该会丢失一些括号和花括号:
function createWindow () {
// Create the browser window.
mainWindow = new BrowserWindow({width: 800, height: 600})
// and load the index.html of the app.
mainWindow.loadURL(url.format({
pathname: path.join(__dirname, 'index.html'),
protocol: 'file:',
slashes: true
/* More code in this and sub functions*/
}))
}
该应用程序现在应该可以正确运行。我测试了您的确切代码,删除了我没有的库,并且它加载时没有任何错误。
desoares
2018-05-04