无法阅读' on'未完成的电子javascript

时间:2017-10-27 14:22:31

标签: javascript electron

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

  

未捕获的TypeError:无法读取属性' on'未定义的   宾语。在物体上的(H:\ electric \ main.js:12:4)。   (H:\ electric \ main.js:63:3)在Module._compile(module.js:571:32)at at   Module.load中的Object.Module._extensions..js(module.js:580:10)   (module.js:488:32)在tryModuleLoad(module.js:447:12)at at   Module.require中的Function.Module._load(module.js:439:3)   (module.js:498:17)at require(internal / module.js:20:19)at   文件:/// 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]

8 个答案:

答案 0 :(得分:3)

我想您正在尝试使用节点运行电子。您的package.json看起来像这样吗?

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

请更改为运行电子应用程序

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

应该可以

注意:,这对于通过诸如此类的命令将电子安装到全局的人来说是额外的

npm install -g electron

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

npm link electron

答案 1 :(得分:3)

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

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

执行此操作:

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

答案 2 :(得分:1)

我有一个类似的问题。在我的机器上,我必须使用

npm start

代替电子命令,否则给我带来麻烦。

感谢kontrollanten

答案 3 :(得分:1)

我需要确定您的html,但是我遇到了这个问题,这是由于在html中链接js引起的。基本上,您要两次启动该应用程序。一次,当节点在您启动时运行“ electron what.js”时,又一次,因为它是在html中链接的。例如:

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

index.html具有“

  

脚本src =“ index.js”

”,因此发射了两次。

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

答案 4 :(得分:0)

显然,app尚未定义。这意味着:

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

无法找到您要求的要求。你确定你把电子装到了适当的文件夹吗?

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

npm list --depth=0

获取节点包的列表。

那里有电子吗?如果不是:

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

来自项目根文件夹。

如果使用了flag,则require将存储在package.json中,当使用npm install时,电子将在本地安装在node_modules文件夹中。

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

我真的很晚才上游戏,但是花了一段时间才开始搜寻我的可怕错误。

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

这意味着我的条目 electron.js 是引用/请求ITSELF而不是node_modules中的那个。

答案 7 :(得分:-1)

如果您尚未安装此程序包,请尝试删除此旧程序包并安装此程序包:

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')