问题标签 [ipcrenderer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactjs - 在电子应用程序中使用 contextBridge/preload 时如何更新反应状态
我有一个使用反应的电子应用程序。我在 preload.js 中使用 contextBridge。我想将 app.js 中的变量通过桥传递给主进程中的函数;它将一个值返回到桥并返回到 app.js,它会以某种方式更新状态并触发重新渲染。以下代码正在工作到更新状态。我不明白如何从 preload.js 到 app.js 获取变量?我希望的临时技巧是从预加载中设置 localstorage 并调用 setTimeout 函数来观察特定变量的变化。我知道这是一种不太有趣的方法。代码在这里:
app.js -
preload.js -
main.js -
api - preload.js 中的 ipcRenderer.on 如何检测 webContents.send?
我是堆栈溢出的全新用户,这是我的第一个问题。
我一直在研究使 Electron 应用程序更安全的方法,并遇到了以下关于 contextBridge 和 preload.js 的讨论。 如果 contextIsolation = true,是否可以使用 ipcRenderer?
我在下面复制了感兴趣的代码。我的问题是关于 Main 进程何时将消息发送回 Renderer 进程。
Main 进程通过 win.webContents.send("fromMain", responseObj); 将消息发送回 Renderer;
在 Renderer 进程中没有活动的侦听器(没有 ipcRenderer.on,因为它在 preload.js 中)。我们只有 window.api.receive() 但这不是一个监听器本身?
那么,window.api.receive() 是如何知道何时运行的呢?
编辑/已解决:请参阅下面发布的我自己的答案,谢谢。
main.js
preload.js
渲染器.js
reactjs - 如何使用单一代码库在浏览器和 PC 中运行 Electron 应用程序
要求- 使用单一代码库在浏览器和 pc 中运行电子应用程序。
面临的问题- 能够在 pc 中作为桌面应用程序运行,但在浏览器中运行 localhost:3000 时(在我的情况下是 Chrome)面临一些与 window.require 相关的问题。在网上尝试了多种解决方案,但目前没有成功。
用例- 使用 ipcMain 和 ipcRenderer 在电子 js 中的 React 应用程序和 main.js 文件之间进行通信,仅适用于 pc 应用程序。(在浏览器中,我需要将其作为没有电子功能(ipcMain 和 ipcRenderer 通信)的简单 Web 应用程序运行,但我需要应用程序在浏览器中运行以及使用单个代码库)
包.json 文件
我的 PC 配置- (macOs Big Sur | 版本 11.4)
由于我是电子 js 的新手,请帮助我提供一些有价值的意见。如果有人遇到并解决了这个问题,请指导我正确的方向。
如果问题未解决或需要其他任何内容,请告诉我。
javascript - 如何从 preload.js 接收数据到 renderer.js
我正在单击一个按钮,该按钮会打开一个对话框以获取文件夹根目录。我目前正在使用调用/句柄。我创建了一个 promise 函数来返回我的数据,但不确定如何将我的数据从 preload.js 移动到 renderer.js
主.js
预加载.js
渲染器.js
CrawlDirectory(文件路径)
javascript - Electron 应用程序:TypeError fs.existsSync 不是函数
我正在使用 React 和 SQLite3 在 Electron 中构建一个桌面应用程序。我的配置如下:
- 节点:v14.17.4
- 电子:13.2.1
- 反应:17.0.2
- sqlite3:^5.0.2
我正在尝试启用主端和渲染器端之间的通信,以便通过按下使用 react 构建的按钮在 SQLite3 数据库中插入一行。为此,我正在尝试使用 ipcmain 和 ipcrenderer,但是,如果我使用该指令,const electron = require ("electron");
我会收到错误:TypeError: fs.existsSync is not a function
.
我正在使用该npm run start
命令在开发模式下运行应用程序。
包.json
main.js
reactjs - 如何解决 fs.existsSync 不是函数?
在尝试在电子之间进行通信并做出反应时,我遇到了上面提到的错误。
在我的App.js
文件中:这导致了错误。
我有两个电子文件。启动器(主)和预加载。
我已经尝试了几件事。
我在预加载文件中添加了这个,但仍然出现该错误。
在启动器(主)文件中:
添加错误堆栈:
javascript - ElectronJS Jquery 和 IPCRenderer / 它不起作用 / 不能一起运行
我正在尝试为工作中的同事制作一个简单的桌面应用程序。我设计了界面,我正在使用 webview。我用 frame: false 命令删除了框架,制作了一个自定义设计框架,并用 ipcrenderer 控制按钮。到目前为止,一切进展顺利。但是,我在我的 index.html 中使用引导程序,我必须使用 jquery。我在这里使用标签分区。
如果我在 webPreferences 中执行 nodeintegration:false,则引导和 jquery 功能,即选项卡部分,可以正常工作。但我使用 ipcrenderer 的按钮不起作用。
相反,如果我将其更改为 nodeintegration: true,我的所有 ipcrenderer 按钮都可以正常工作,但我的选项卡部分,即需要 jquery 的其他菜单,将停止工作。
如何同时运行 ipcrenderer 进程和 jquery 进程。
我这几天一直在处理这个问题,但没有得到解决。
我尝试了各种解决方法,但我无法获得正常工作的结果。我怎么解决这个问题。谢谢您最好的问候。
索引.html
main.js 的一部分
angular - Electron - 限制从主进程到渲染进程的消息流
我目前在接收从我的主进程到我的渲染器进程(在 Angular 中)的活动窗口的恒定流时遇到一些问题。我知道接收每秒更新会破坏我的应用程序,所以我试图使用 setTimeout 来限制它。但这仍然行不通。我怎样才能解决这个问题?
渲染器 - Angular 中的组件
main.js
到目前为止,我已经尝试了以下方法,但这只会显示一次活动窗口。我想跟踪所有的变化:
渲染器 - Angular 中的组件
main.js
javascript - Electron FFmpeg 进度处理
我有一个电子应用程序(带有 Angular)。
我是 Electron 和所有这些进程间事件处理的新手。
我的问题是我有这个 ipcMain 处理程序(主进程)(我从 Angular 服务“调用”):
我想要实现的是跟踪视频和音频合并的进度(可能需要几秒钟到几分钟)。但这里的问题是,一旦 Promise 被解决,它就不会发送下一个进度值(我最终会收到 3%,然后即使“合并”仍在进行中,也不会收到任何其他值)。
然后我尝试了以下(主要过程)(我无法编译):
我添加了评论来解释我想要实现的目标。在我的 Angular 服务中,我正在调用这个处理程序,如下所示:
编译时出现以下错误:
我相信还有其他一些“优雅”的方法可以在 Main 和 Renderer 进程之间实现这种行为,如果你能引导我找到任何我将不胜感激的方法。
否则,你能帮我解决这个错误吗?或者与我分享我可以阅读什么来学习如何在 Electron 中使用“Observables”。
javascript - ipcRenderer 没有收到来自 webContents.send 的消息(电子)
在我的程序的主窗口中,我有一个按钮,如果单击该按钮,则会创建一个新的附加窗口。当这个新窗口完成加载时,我想向ipcRenderer
; 但是,到目前为止ipcRenderer
,即使窗口创建成功,我也无法接收消息。
以下是 中的代码片段main.js
:
请注意,这createWindow
是一个创建并返回浏览器窗口的函数。
这是代码片段preload.js
:
如您所见,我希望在received message!
新窗口完成加载后在控制台中接收字符串;但是,这并没有发生。我究竟做错了什么?