【问题标题】:How to use CommonJS exports and imports with SocketIO?如何通过 SocketIO 使用 CommonJS 导出和导入?
【发布时间】:2019-09-23 06:04:11
【问题描述】:

我正在尝试使用 CommonJS 模块将我的服务器端代码模块化。到目前为止,这是我的模块,在 motorDriver.jsfile 中有一个函数:

var rpio = require('rpio');

function motorDriver() {

    this.makeStep = function(pin) {
        rpio.open(pin, rpio.OUTPUT, rpio.LOW);

        /* On for 1 second */
        rpio.write(pin, rpio.HIGH);
        rpio.sleep(data.interval);

        /* Off for half a second (500ms) */
        rpio.write(pin, rpio.LOW);
    }
  }

  module.exports = motorDriver;

然后我尝试导入它并像在server.js中那样使用它:

var motorDriver = require('./motorDriver');

io.on('connection', function (socket) {
    var motor = motorDriver()

    socket.on('make step', function () {
        console.log("Make Step");
        motor.makeStep(40)
    });
});

当我按下按钮触发此套接字时,出现错误:

TypeError: Cannot read property 'makeStep' of undefined
    at Socket.<anonymous> (/Users/gov-sur/Documents/CamSlider/server.js:38:15)
    at Socket.emit (events.js:182:13)
    at /Users/gov-sur/Documents/CamSlider/node_modules/socket.io/lib/socket.js:528:12

任何人都知道我做错了什么或我的错误理解在哪里?

提前致谢!

【问题讨论】:

    标签: javascript module require commonjs


    【解决方案1】:

    导出整个模块我只是单独导出每个函数:

    function makeStep (pin) {
            rpio.open(pin, rpio.OUTPUT, rpio.LOW);
    
            /* On for 1 second */
            rpio.write(pin, rpio.HIGH);
            rpio.sleep(0.0001);
    
            /* Off for half a second (500ms) */
            rpio.write(pin, rpio.LOW);
        }
    
    module.exports = {
        makeStep
    }
    

    像这样我能够像最初的问题中所说的那样使用它,但没有将它初始化为一个对象:

    var motorDriver = require('./motorDriver');
    
    io.on('connection', function (socket) {
        var motor = motorDriver
    
        socket.on('make step', function () {
            console.log("Make Step");
            motor.makeStep(40)
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2018-03-16
      • 2019-04-02
      • 1970-01-01
      • 2016-08-31
      • 2017-04-12
      • 2020-12-26
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      相关资源
      最近更新 更多