簡體   English   中英

無法在 ipcRenderer 的反應組件中導入 electron

[英]cannot import electron in react componment for ipcRenderer

所以我試圖將 ipcRenderer 導入到反應組件中以與 electron 端進行通信。 問題是我無法導入 electron。我試過了

import { ipcRenderer } from 'electron/renderer'

未找到返回模塊電子/渲染器

import { ipcRenderer } from 'electron'

返回 fs.existsSync 不是 function

const renderer = require('electron');

返回 fs.existsSync 不是 function

const renderer = require('electron').ipcRenderer;

返回 fs.existsSync 不是 function

const renderer = window.require('electron');

返回 window.require 不是 function

我不知道該怎么辦了,我已經嘗試了一切

我知道了! 他們使用electron-react-bolierplate准備了一個自定義的preload.js腳本,該腳本向渲染的組件公開了三個函數: myPing :(只是一個演示,向控制台發送 ping 消息)並公開了ononce ipcRenderer 方法

import { Component } from 'react';
...
...
    class Hello extends Component {
      componentDidMount() {
        console.log('Mounted!', 'Window', window, 'electronApi', window.electron, 'ipcRenderer', window.electron.ipcRenderer);
    
        window.electron.ipcRenderer.on('ipc-example', (arg) => {
          // eslint-disable-next-line no-console
          console.log(arg);
        });
    
        window.electron.ipcRenderer.myPing();
      }
    
      render() {
        return (
          <div>
    ...
    ...

我曾經有同樣的問題。 您不應該直接在渲染器/反應組件中導入 electron。 相反,在您的 preload.ts 文件中,您可以使用 electron-react-bolierplate 的一些基本配置。

所以在你的反應組件中,你應該使用window.electron.ipcRenderer.on('channel-name', args)示例

 const myEventHandler = () => { window.electron.ipcRenderer.on('channel-name', (event, data) => { console.log('data, event', data, event); }); };

window.electron,這里的electron是preload.ts文件中給的名字。 contextBridge.exposeInMainWorld('electron', {...})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM