如何将数据从我的 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 控制器