enesaltinok
enesaltinok

Reputation: 55

Emitter inside emitter node.js

I have the code :

    var events = require('events');

    var serialport = require("serialport");
    var SerialPort = serialport.SerialPort;
    var serialPort;


    function SerialConnector(){

    //EventEmitter constructor
    events.EventEmitter.call(this);

    var self = this;

    this.connect = function (pathToSerialPort, options)
        {

            serialPort = new SerialPort(pathToSerialPort, options, false);

            serialPort.open();

            serialPort.on('open', function(data){

                self.emit('open', data);
            });

            serialPort.on('close', function(err){

                self.emit('close', err);
            });

            serialPort.on('error', function(err){

                self.emit('error', err);
            });

            serialPort.on('data', function(data){

                self.emit('data', data);
            });
        };  

    }

//Copies all of the EventEmitter properties to the SerialConnector object

SerialConnector.prototype.__proto__ = events.EventEmitter.prototype;

module.exports = SerialConnector;

I require the module from another file and call it like this :

var SerialConnector = require('./serial.connector.js');

var serialConnector = new SerialConnector();

serialConnector.on('err',function(err){
    console.log('Test');
    console.log(err);
});

serialConnector.connect("/dev/ttyUSB0",{
    baudrate : 19200,
    dataBits : 8,
    parity : 'none',
    stopBits : 1
});

When a serial port event is emitted, it throws

"event.js:2877: Uncaught TypeError: Uncaught, unspecified "error" event." 

What am I doing wrong?

Upvotes: 0

Views: 209

Answers (1)

DeadAlready
DeadAlready

Reputation: 3008

You are emmiting an 'error' event, but are catching an 'err' event.

serialConnector.on('err',function(err){ //<-- Should be 'error'
    console.log('Test');
    console.log(err);
});

Upvotes: 2

Related Questions