从react组件调用节点module

IT技术 node.js reactjs electron node-modules lwip
2021-05-01 23:56:48

我如何在 React 组件中使用节点module,例如“lwip”?这是针对电子应用的。

用代码更新问题:

  1. 这是我试图从中调用另一个 .js 文件的 react 组件。

按钮.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 文件。

进程.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){

        });

    });
}
1个回答

Node module需要从主 Electron 线程运行,而不是运行 React 的渲染器线程。

您可以在渲染器进程中运行 NPM module,就像您在浏览器中一样,但这些module不能使用 Node.js 库,因为显然浏览器中没有 Node。

要在主(节点)和渲染器(浏览器)线程之间进行通信,您需要使用 IPC(进程间通信)一个使用事件在线程之间发送数据的系统。

这是 Electron 的 IPC 文档。

如果您需要在线程之间进行持续通信,您可以使用电子 ipc 套接字库。