javascript - 类型错误:myParser.MessageParser 不是构造函数

标签 javascript node.js constructor typeerror subclassing

我正在尝试编写一个与串行端口库一起使用的自定义解析器。我遵循了库提供的解析器的示例,但是当我尝试实例化时,我收到了标题错误。

我被困在这个问题上,找不到任何东西。我是 JS 初学者,所以很可能我错过了一些明显的东西。代码从命令行执行:'C:> Node speed.js'。

在 msgParser.js 中:

const Buffer = require('safe-buffer').Buffer;
const Transform = require('stream').Transform;

module.exports = class MessageParser extends Transform 
{
    constructor() 
    {
        //options = options || {};
        super();

        this.delimiter = 0xA4;
        this.msg = Buffer.alloc(0);
        this.bytesNeeded = 0;
    }

    _transform(chunk, encoding, callback) 
    {
         //etc
    }

    _flush(cb) 
    {
        this.push(this.msg);
        this.msg = Buffer.alloc(0);
        cb();
    }

};

在 speed.js 中:

/* jshint esversion: 6 */
/* jshint node: true */
'use strict';
const config = require('./config.json');
const serial = require('serialport');
const myParser = require('./msgParser.js');

const msgParser = new myParser.MessageParser();
const monitor = new serial.parsers.Readline({ delimiter: '\r\n' });

var port = new serial(config.serialPort, { baudRate: config.baudRate, highwatermark: 1024 });

port.pipe(msgParser).pipe(monitor);

最佳答案

您正在定义整个导出而不是导出上的属性。这会起作用。

const MessageParser = require('./msgParser.js');
const msgParser = new MessageParser();

应该可以。

关于javascript - 类型错误:myParser.MessageParser 不是构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49478665/

相关文章:

javascript - 在 JavaScript 中检测最新的浏览器版本

使用 javascript/jquery 隐藏 div 的 PHP 函数

javascript - 是在 css 中使用 javascript

javascript - KnockoutJS 绑定(bind)问题 - 无法读取属性

javascript - 如何将 "authorization"检查添加到 NodeJs 中的选择性 API?

python - 通过 Fabric 进行 npm 安装

javascript - JavaScript 中的原型(prototype)有什么意义?为什么不直接将方法添加到构造函数?

node.js - 从 node.js 在 mongolab mongodb 数据库中创建集合模式

.net - 依赖注入(inject) - 构造

C++构造函数问题