首页 > 解决方案 > TypeError:无法读取 ipcMainImpl 处未定义的属性“webContents”。在电子

问题描述

在我的电子项目中,我在尝试从不同窗口发送和接收数据时收到以下 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();
});

标签: javascripthtmlelectron

解决方案


我弄清楚了我的错误在哪里,所以我正在回答我自己的问题。

看来我试图发送尚未完全接收的数据,因此我不得不等待我的页面加载,然后按如下方式发送数据。

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

推荐阅读