【问题标题】:Cannot read property 'on' of undefined in electron javascript无法读取电子 javascript 中未定义的属性“on”
【发布时间】:2018-04-09 04:36:57
【问题描述】:

我正在尝试运行此代码,但每次都收到此错误消息。首先,我在全球范围内安装了npm。然后我在我的应用程序中安装了它,但仍然出现同样的错误。

未捕获的类型错误:无法读取未定义的属性“on” 目的。 (H:\electric\main.js:12:4) 在对象处。 (H:\electric\main.js:63:3) 在 Module._compile (module.js:571:32) 在 Module.load 中的 Object.Module._extensions..js (module.js:580:10) (module.js:488:32) 在 tryModuleLoad (module.js:447:12) 在 Module.require 处的 Function.Module._load (module.js:439:3) (module.js:498:17) 在需要 (internal/module.js:20:19) 在 file:///H:/electric/views/login.html:2:3

const electron = require('electron');
const {Menu} = require('electron');
const {app} = require('electron');
const {BrowserWindow} = require('electron');
const conn = require('mysql');
const path = require('path');
const url = require('url');

// const app = electron.app;
// const BrowserWindow = electron.BrowserWindow;
var mainWindow = null;
app.on('ready', function () {
    mainWindow = new BrowserWindow({ width: 1024, height: 768, backgroundcolor: '#2e2c29' });
    mainWindow.loadURL(url.format({
        pathname: 'popupcheck.html',
        protocol: 'file:',
        slashes: true
    }));enter code here
    mainWindow.webContents.openDevTools();
    mainWindow.setProgressBar(1);
});`][1]

【问题讨论】:

  • 添加应用程序打印的错误。
  • 未捕获的类型错误:无法在 Object. (H:\electric\main.js:12:4) 处读取未定义的属性“on”。 (H:\electric \main.js:63:3) 在 Module._compile (module.js:571:32) 在 Object.Module._extensions..js (module.js:580:10) 在 Module.load (module.js:488) :32) 在 tryModuleLoad (module.js:447:12) 在 Function.Module._load (module.js:439:3) 在 Module.require (module.js:498:17) 在 require (internal/module.js :20:19) 在 file:///H:/electric/views/login.html:2:3

标签: javascript electron


【解决方案1】:

我猜你正在尝试使用 node 运行电子。你的 package.json 是这样的吗?

{
    "scripts": {
        "start": "node main.js"
    }
}

请改成这样运行电子应用

{
    "scripts": {
        "start": "electron ."
    }
}

它应该可以工作

注意:对于使用类似命令将电子安装到全局的人来说这是额外的

npm install -g electron

当你想在代码中使用电子时require(electron)你应该使用这个命令将全局路径链接到你的当前目录

npm link electron

【讨论】:

    【解决方案2】:

    我需要查看您的 html 以确定,但我遇到了这个问题,它是由在我的 html 中链接 js 引起的。基本上,您将启动应用程序两次。一次,当你开始时节点运行'电子任何.js',再次因为它链接在你的html中。例如:

    我的应用正在 index.js 中创建,index.html 是我的应用正在加载的内容。

    index.html 有“

    脚本 src="index.js"

    ",所以它会发射两次。

    我注释掉了脚本,我不再收到错误。

    【讨论】:

    • 谢谢。就是这样。我认为他们都来自一个糟糕、可怕和灾难性的教程。
    【解决方案3】:

    我实际上遇到了同样的问题。我了解到你只能 require(electon) 一次,否则它只会为调用它的最后一个变量定义。而不是这样做:

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

    这样做:

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

    【讨论】:

      【解决方案4】:

      我遇到了类似的问题。在我的机器上我必须使用

      npm start

      而不是电子命令,否则会给我带来麻烦。

      谢谢kontrollanten

      【讨论】:

        【解决方案5】:

        我真的迟到了,但是在我意识到我的严重错误之前花了一段时间谷歌搜索。

        我将我的条目 JavaScript 文件命名为 electron.js,这就是破坏一切的原因。

        这意味着我的条目 electron.js 是指/要求 ITSELF 而不是 node_modules 中的条目。

        【讨论】:

          【解决方案6】:

          显然,app 没有定义。这意味着:

          const {app} = require('electron');
          

          找不到您要求的要求。您确定将电子安装到适当的文件夹 / 吗?

          在项目或模块根目录中运行:

          npm list --depth=0
          

          获取您的节点包的列表。

          有电子吗?如果没有:

          npm install electron (with or without an optional flag --save)
          

          来自项目根文件夹。

          如果使用 flag,则要求将存储在 package.json 中,当使用 npm install 时,electron 将本地安装在您的 node_modules 文件夹中。

          您还可以查看 electron 的 npm 文档(每个 npm 模块都可以这样做 - 结果我的质量各不相同): npm - electron

          【讨论】:

          • 仍然没有得到解决方案...我创建了另一个文件夹并再次安装了电子,而我的节点已全局安装并且电子已安装在我的应用程序中...我遇到了同样的错误...如何我可以解决这个问题吗?
          • 你是如何启动你的应用程序的?你运行electron 命令吗?
          • 同时检查项目根目录中node_modules 下是否存在electron 文件夹。如果没有,请运行npm install 并再次检查
          【解决方案7】:

          我检查了我的 html 文件。问题是我已经包含了我的 javascript 文件两次。一次在 package.json 文件中,第二次在 html 中。所以,我已经删除了 html 中包含的 javascript。这样,问题就解决了。

          【讨论】:

            【解决方案8】:

            如果您还没有安装,请尝试删除这个旧包并安装它:

            git clone https://github.com/electron/electron-quick-start
            cd electron-quick-start
            npm install
            npm start
            

            如果您遇到同样的错误,请自行修复:

            const electron = require('electron');
            const app = require('app');
            const BrowserWindow = require('browser-window')
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-06-15
              • 2018-10-14
              • 2018-12-17
              • 2016-06-30
              • 2016-05-09
              相关资源
              最近更新 更多