从react组件调用节点模块

时间:2016-12-15 20:51:13

标签: node.js reactjs electron node-modules lwip

我如何使用节点模块,例如' lwip'在React组件中?这是用于电子申请。

使用代码更新问题:

  1. 这是我试图调用另一个.js文件的反应组件。
  2. 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文件。
    2. 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){
      
              });
      
          });
      }
      

1 个答案:

答案 0 :(得分:2)

Node模块需要从主电子线程运行,而不是运行React的渲染器线程。

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

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

Here's the IPC documentation for Electron.

如果您需要线程之间的持续通信,您可以使用electron-ipc-socket库。