无法读取电子 javascript 中未定义的属性“on”

Posted

技术标签:

【中文标题】无法读取电子 javascript 中未定义的属性“on”【英文标题】:Cannot read property 'on' of undefined in electron javascript 【发布时间】: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 【参考方案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')

【讨论】:

以上是关于无法读取电子 javascript 中未定义的属性“on”的主要内容,如果未能解决你的问题,请参考以下文章

我该如何解决这个问题:未捕获的类型错误:无法读取 javascript 中未定义的属性“toString”

无法读取 discord.js 中未定义的属性“发送”

未捕获的类型错误:无法读取切换功能中未定义的属性“prop”

未捕获的类型错误:无法读取 jquery 滑块中未定义的属性“addClass”

TypeError:无法读取反应js中未定义的属性'fn'

无法读取主干中未定义的属性“长度”