TypeError:无法读取electron中ipcMainImpl处未定义的属性“webContents”

rjzwgtxy  于 2023-04-27  发布在  Electron
关注(0)|答案(3)|浏览(168)

在我的电子项目中,我在尝试从不同窗口发送和接收数据时收到以下TypeError。

我的导入

const electron = require("electron");
const url = require("url");
const path = require("path");
const { Menu } = require("electron/main");
const { webContents } = require("electron");
const { app, BrowserWindow, ipcMain } = require("electron");

错误位置

发送数据

<script>
  const electron = require("electron");
  const { ipcRenderer } = electron;

  const form = document.querySelector("form");
  form.addEventListener("submit", submitForm);

  function submitForm(e) {
    e.preventDefault();
    const item = document.querySelector("#item").value;
    ipcRenderer.send("item:add", item);
  }
</script>

接收数据

// Catch item:add
ipcMain.on("item:add", function (e, item) {
  console.log(item);
  mainWindow.webContents.send("item:add", item);
  addWindow.close();
});
58wvjzkj

58wvjzkj1#

我知道我错在哪里了,所以我在回答我自己的问题。
看起来我试图发送的数据还没有完全被接收到,因此我不得不等待我的页面加载,然后发送数据如下。

ipcMain.on("item:add", function (e, item) {
        mainWindow.webContents.on("did-finish-load", () => {
            mainWindow.webContents.send("item:add", item);
        });
});
lf3rwulv

lf3rwulv2#

试试这样的方法:

import { remote } from 'electron' // ES6
const { remote } = require('electron') // ES5

// stuff
const webContents = remote.getCurrentWindow().webContents

// Do something with webContents
webContents.send("item:add", item);
ercv8c1e

ercv8c1e3#

对我来说,这是一个范围错误,我在模块级别有一个let mainWindow,但在createWindow函数中,我有一行async function createWindow() { const mainWindow = new BrowserWindow
实际上,我有两个mainWindow示例,第一个为null,第二个在createWindow函数的作用域内。
我删除了const,并纠正了示波器,问题解决了。
更正代码:async function createWindow() { mainWindow = new BrowserWindow
My noob error:-)

相关问题