【问题标题】:Uncaught TypeError: Cannot read property 'on' of undefined. I have tried to reinstall electron as well未捕获的类型错误:无法读取未定义的属性“on”。我也尝试过重新安装电子
【发布时间】:2019-01-30 21:01:36
【问题描述】:

我无法删除提到的错误:

"Uncaught TypeError: Cannot read property 'on' of undefined"

我也尝试过重新安装电子,但仍然遇到同样的错误。

 const electron = require('electron');
 const {BrowserWindow, Menu} = require('electron');
 var app = electron.app;
 const conn = require('mysql');
 const path = require('path');
 const url = require('url');
 var mainWindow;
 app.on('ready', function () {
     mainWindow = new BrowserWindow({ width: 1024, height: 768, 
     backgroundcolor: 'black' });
        mainWindow.loadURL(url.format({
            pathname: 'dashboard.html',
            protocol: 'file:',
            slashes: true
       }));
     mainWindow.webContents.openDevTools();
     mainWindow.setProgressBar(1);
});

【问题讨论】:

  • 哪里出错了?
  • elctron 文件是否在同一个文件夹中?
  • app.on() 这里是一个错误...
  • 是的,电子已安装在我的应用中
  • 是否包含在 package.json 文件中?只需检查

标签: javascript electron


【解决方案1】:

“类型错误:无法读取未定义的属性‘on’” 这意味着 'app' 对象尚未从 'electron' 模块和第 8 行的 'app.on()' 方法正确加载,它已在未定义的对象 'app' 上调用。

请尝试这些可能的解决方案。

  1. 替换

    const electron = require('electron');
    const {BrowserWindow, Menu} = require('electron');
    var app = electron.app;
    

    var app = require('electron').app;
    const {BrowserWindow, Menu} = require('electron');
    
  2. 在 Package.json 文件中编辑/添加此行,指定应用程序的起点。

     "script":{"start": "electron ."}
    

编辑:

可能你的系统(全局)某处安装了 npm 电子模块,它覆盖了内置电子模块。登出就可以查到它的路径

 require.resolve('electron').

【讨论】:

  • 你并没有真正添加任何东西。您应该提供的替代方案是,他可以从同一个 require 语句中解构所有内容:appBrowserWindowMenu
  • 从同一个 require 对象中解构每个模块不是这里的问题(它的工作原理相同)。!我只是通过链接将这两个表达式合并为一个。我还提到它是“可能的解决方案”,因为第二点过去解决了我的问题。
  • 你甚至没有正确链接它;连续两次需要electron。而 Electron 是一个开发依赖,它会优先考虑 node_modules 然后 global
  • 感谢您的澄清。 (Y)
猜你喜欢
  • 2018-10-14
  • 1970-01-01
  • 2016-04-11
  • 2014-07-12
  • 2021-06-20
  • 1970-01-01
  • 2021-12-22
  • 2015-01-06
  • 1970-01-01
相关资源
最近更新 更多