电子 - "无法读取属性' on'未定义的&#34 ;;尝试重新安装,

时间:2018-05-04 02:00:50

标签: node.js npm electron

我正在测试一个电子应用,但我收到了这个有害的错误:

" TypeError:无法读取属性' on'未定义"

我所做的研究指出了一个模糊的模块安装,一个语法问题,或者将一个未定义的变量传递到app.on,我怀疑问题可能是电子被错误指向(现在它& #39;指向以电子\ 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 */
                });

});

2 个答案:

答案 0 :(得分:5)

您可能尝试使用以下命令运行应用程序:

$ node index.js

电子文件是一个二进制文件,而不是JavaScript文件,当你需要它与节点一起运行时,没有对象可以调用electron.app,所以它解析为null并且没有属性。与Electron.JS的getting started文档一样,您必须运行这样的应用程序:

更改您的package.json脚本会话添加start:

{
    "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*/

  }))

}

应用程序现在应该正确运行。我测试了你的确切代码,删除了我没有的库,并且它没有加载错误。

答案 1 :(得分:-1)

基于电子文档here 也许您在全球范围内安装了电子。运行以下命令解决了我的问题:

npm uninstall electron
npm uninstall -g electron