electron 从react组件调用节点模块

ioekq8ef  于 2023-02-14  发布在  Electron
关注(0)|答案(1)|浏览(159)

如何使用节点模块,例如React组件中的“lwip”?这是一个电子应用程序。
使用代码更新问题:
1.这是react组件,我正尝试从该组件调用另一个.js文件。
button.js

import React from 'react';
import ReactDOM from 'react-dom';
import resize from '../../node-code/process';

class Button extends React.Component{

    mess(){
        console.log('working');
        resize();
    }

    render(){
        return <button id="imgButton" onClick={this.mess.bind(this)}>Upload Image</button>
    }
}

export default Button

1.这是另一个javascript文件,我试图调整图像的大小。
process.js

var lwip = require('lwip');

export default function(){
    var lwip = require('lwip');
    lwip.open('../../public/img/portrait.jpg', function(err, image){

    image.batch()
        .scale(0.75)          // scale to 75%
        .rotate(45, 'white')  // rotate 45degs clockwise (white fill)
        .crop(200, 200)       // crop a 200X200 square from center
        .blur(5)              // Gaussian blur with SD=5
        .writeFile('../../public/img/output.jpg', function(err){

        });

    });
}
ltqd579y

ltqd579y1#

Node模块需要从主Electron线程执行,而不是运行React的渲染器线程。
您可以在呈现器进程中运行NPM模块,就像您在浏览器中一样,但是这些模块不能使用Node.js库,因为显然浏览器中没有Node。
要在主(节点)和渲染器(浏览器)线程之间进行通信,您需要使用IPC(进程间通信),这是一个使用事件在线程之间发送数据的系统。
Here's the IPC documentation for Electron.
如果你需要线程之间的持续通信,你可以使用electron-ipc-socket库。

相关问题