无法读取电子 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”
未捕获的类型错误:无法读取切换功能中未定义的属性“prop”