如何将数据从我的 main.js 发送到我的 index.html(电子)

Posted

技术标签:

【中文标题】如何将数据从我的 main.js 发送到我的 index.html(电子)【英文标题】:How can I send data from my main.js to my index.html (Electron) 【发布时间】:2021-09-13 22:31:51 【问题描述】:

如您所知,我是 javascript 和 Electron 的完全初学者。

我想我已经看过大多数地方了,但我没有找到任何东西。

index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>??</title>
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <div class="main">
        <button id="get-data" type="submit">Get Data</button>
    </div>

    <script src="script.js"></script>
</body>

</html>

main.js

const  app, BrowserWindow  = require("electron");
const ipc = require("electron").ipcMain;

app.whenReady().then(() => 
    const window = new BrowserWindow(
        "center": true,
        "width": 500,
        "height": 800,
        "webPreferences": 
            "nodeIntegration": true
        
    );
    window.loadFile("index.html");
);

ipc.on("uhhm", event => 
    event.sender.send("ok", "Hello World!");
);

script.js

const ipc = require("electron").ipcRenderer;
const getDataBtn = document.getElementById("get-data");

getDataBtn.addEventListener("click", () => 
    ipc.send("uhhm");
    ipc.once("ok", data => 
        getDataBtn.innerHTML = "Moving On... " + data;
    );
);

我收到此错误:

Uncaught ReferenceError: require is not defined
    at script.js:1

IDK 怎么办

有什么建议吗?

【问题讨论】:

这能回答你的问题吗? communication between 2 browser windows in electron 【参考方案1】:

如果您使用 >= 5 版本的 Electron,则需要启用 nodeIntegration 和 contextIsolation 参数,如下所示:

app.on('ready', () => 
    mainWindow = new BrowserWindow(
        webPreferences: 
            nodeIntegration: true,
            contextIsolation: false,
        
    );
);

【讨论】:

是的,谢谢,that 工作【参考方案2】:

当我使用 Electron Framework 工作了一段时间时,我遇到了这个问题,我需要在渲染器进程和主进程之间进行 IPC 通信。渲染器进程位于脚本标记之间的 HTML 文件中并生成相同的错误。

const ipcRenderer = require('electron')
//throws the Uncaught ReferenceError: require is not defined

在你的情况下:


const ipc = require("electron").ipcRenderer;

当浏览器窗口(嵌入此 HTML 文件的位置)最初是在主进程中创建时,您必须通过将 Node.js 集成指定为 true 来解决此问题。

function createWindow() 

    // Create a new window
   const window = new BrowserWindow(
        width: 300,
        height: 200,

        // The lines below solved the issue
        webPreferences: 
            nodeIntegration: true
        
)

这为我解决了这个问题。解决方案是here提出的。

【讨论】:

以上是关于如何将数据从我的 main.js 发送到我的 index.html(电子)的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从我的数据库 (Firebase Firestore) 发送到我的 React Native 应用程序?

如何将崩溃信息从我的 Android 应用程序发送到我的服务器? [复制]

在 Google OAuth2 授权流程之后如何将 JWT 从我的后端服务器发送到我的前端

如何将 json 数据从我的 jsp 页面发送到 spring rest 控制器

我应该将 id 令牌从我的 SPA 发送到我的 rest 后端吗?

Haskell Persistent Library - 如何从我的数据库中获取数据到我的前端?