无法读取电子javascript中未定义的属性“on”
我尝试运行此代码,但每次都会收到此错误消息。首先,我全局安装了
npm
。然后,我将其安装在我的应用程序中,但仍然收到相同的错误。
Uncaught TypeError: Cannot read property 'on' of undefined at Object. (H:\electric\main.js:12:4) at Object. (H:\electric\main.js:63:3) at Module._compile (module.js:571:32) at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:488:32) at tryModuleLoad (module.js:447:12) at Function.Module._load (module.js:439:3) at Module.require (module.js:498:17) at require (internal/module.js:20:19) at 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]
我猜你正试图使用​​ node 运行 electron。你的 package.json 看起来像这样吗?
{
"scripts": {
"start": "node main.js"
}
}
请更改为像这样运行 electron 应用程序
{
"scripts": {
"start": "electron ."
}
}
它应该可以工作
注意: 对于使用类似这样的命令将 electron 安装到全局的人来说,这是额外的
npm install -g electron
当你想在代码 require(electron) 中使用 electron 时,你应该使用此命令将全局路径链接到当前目录
npm link electron
我需要查看您的 html 才能确定,但​​我遇到了这个问题,这是由于在我的 html 中链接 js 引起的。基本上,您启动了两次应用程序。第一次是在启动时,当 node 运行“electron whatever.js”时,第二次是因为它已链接到您的 html。例如:
我的应用程序是在 index.js 中创建的,index.html 是我的应用程序正在加载的内容。
index.html 有“
script src="index.js"
”,所以它触发了两次。
我注释掉了脚本,不再出现错误。
我实际上也遇到过同样的问题。我了解到您只能 require(electon) 一次,否则它只会为调用它的最后一个变量定义。不要这样做:
const electron = require('electron');
const {Menu} = require('electron');
const {app} = require('electron');
const {BrowserWindow} = require('electron');
这样做:
const { Menu, app, BrowserWindow } = require('electron');