开发者问题收集

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

2017-10-27
32006

我尝试运行此代码,但每次都会收到此错误消息。首先,我全局安装了 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]
3个回答

我猜你正试图使用​​ node 运行 electron。你的 package.json 看起来像这样吗?

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

请更改为像这样运行 electron 应用程序

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

它应该可以工作

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

npm install -g electron

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

npm link electron
MooMoo
2018-12-28

我需要查看您的 html 才能确定,但​​我遇到了这个问题,这是由于在我的 html 中链接 js 引起的。基本上,您启动了两次应用程序。第一次是在启动时,当 node 运行“electron whatever.js”时,第二次是因为它已链接到您的 html。例如:

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

index.html 有“

script src="index.js"

”,所以它触发了两次。

我注释掉了脚本,不再出现错误。

Beezer
2018-08-17

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

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

这样做:

const { Menu, app, BrowserWindow } = require('electron');
Trail3lazer
2020-02-07