【问题标题】:How to resolve kafkaServices.KafkaServices() is not a constructor error in node.js?如何解决 kafkaServices.KafkaServices() 不是 node.js 中的构造函数错误?
【发布时间】:2020-07-04 03:07:38
【问题描述】:

我有以下 js 类KafkaServices。在server.js 我想从KafkaServices 调用一个方法来创建一个Kafka 连接。在server.js 中,我目前正在这样做:

/**
 * Event listener for HTTP server "listening" event.
 */
var kafkaServices = require('./services/kafka-services');
const kafka = require('kafka-node');
function onListening() {
    var addr = server.address();
    var bind = typeof addr === 'string'
      ? 'pipe ' + addr
      : 'port ' + addr.port;
    console.log('Listening on ' + bind);
    logInfo({message: `Server is Listening on http://localhost:${addr.port}.`, scope: 'Server'});
    kafkaTool = new kafkaServices.KafkaServices();
    // Connect to kafka 
    kafkaTool.connect();
    kafkaTool.error();
}

我的KafkaServices也在下面。我正在使用module.exports = KafkaServices; 导出该类并能够在其他地方使用它。

var express = require('express');
var kafka = require('kafka-node');

class KafkaServices{
    constructor(){
        this.Producer = kafka.Producer,
        this.client = new kafka.Client();
        this.producer = new Producer(client);
    }
    connect(){
        // Create a connection
        this.producer.on('ready', function() {
            console.log('Producer is ready');
        })
    }
    error(){
        this.producer.on('error', function(err) {
            console.log('Producer has the following error');
            console.log(err);
        })
    }
    publish(){
        //Publish
        this.producer.send(payload, function (err, data){})
    }
}

module.exports = KafkaServices;

当我尝试运行它时,我收到以下错误消息:

    PS C:\Users\ENV\Projects\tool> npm run start

> settings-tool@1.0.0 start C:\Users\ENV\Projects\tool
> node ./src/server.js

Listening on port 3999
{"timestamp":"2020-07-02T18:22:27.909Z","level":"info","app_name":"tool","message":"Server is Listening on http://localhost:3999.","scope":"Server","tag":"tool"}
{"error":{},"level":"error","message":"uncaughtException: kafkaServices.KafkaServices is not a constructor\nTypeError: kafkaServices.KafkaServices is not a constructor\n    at Server.onListening (C:\\Users\\ENV\\Projects\\tool\\src\\server.js:149:17)\n    at Server.emit (events.js:198:13)\n    at emitListeningNT (net.js:1313:10)\n    at process._tickCallback (internal/process/next_tick.js:63:19)\n    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)\n    at startup (internal/bootstrap/node.js:283:19)\n    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)","stack":"TypeError: kafkaServices.KafkaServices is not a constructor\n    at Server.onListening (C:\\Users\\ENV\\Projects\\tool\\src\\server.js:149:17)\n    at Server.emit (events.js:198:13)\n    at emitListeningNT (net.js:1313:10)\n    at process._tickCallback (internal/process/next_tick.js:63:19)\n    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)\n    at startup (internal/bootstrap/node.js:283:19)\n    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)","exception":true,"date":"Thu Jul 02 2020 14:22:27 GMT-0400 (Eastern Daylight Time)","process":{"pid":22460,"uid":null,"gid":null,"cwd":"C:\\Users\\ENV\\Projects\\tool","execPath":"C:\\Program Files\\nodejs\\node.exe","version":"v10.16.3","argv":["C:\\Program Files\\nodejs\\node.exe","C:\\Users\\ENV\\Projects\\tool\\src\\server.js"],"memoryUsage":{"rss":40157184,"heapTotal":25980928,"heapUsed":16159328,"external":134547}},"os":{"loadavg":[0,0,0],"uptime":106081},"trace":[{"column":17,"file":"C:\\Users\\ENV\\Projects\\tool\\src\\server.js","function":"Server.onListening","line":149,"method":"onListening","native":false},{"column":13,"file":"events.js","function":"Server.emit","line":198,"method":"emit","native":false},{"column":10,"file":"net.js","function":"emitListeningNT","line":1313,"method":null,"native":false},{"column":19,"file":"internal/process/next_tick.js","function":"process._tickCallback","line":63,"method":"_tickCallback","native":false},{"column":11,"file":"internal/modules/cjs/loader.js","function":"Module.runMain","line":834,"method":"runMain","native":false},{"column":19,"file":"internal/bootstrap/node.js","function":"startup","line":283,"method":null,"native":false},{"column":3,"file":"internal/bootstrap/node.js","function":"bootstrapNodeJSCore","line":622,"method":null,"native":false}],"tag":"tool"}
{"error":{},"level":"error","message":"uncaughtException: kafkaServices.KafkaServices is not a constructor\nTypeError: kafkaServices.KafkaServices is not a constructor\n    at Server.onListening (C:\\Users\\ENV\\Projects\\tool\\src\\server.js:149:17)\n    at Server.emit (events.js:198:13)\n    at emitListeningNT (net.js:1313:10)\n    at process._tickCallback (internal/process/next_tick.js:63:19)\n    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)\n    at startup (internal/bootstrap/node.js:283:19)\n    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)","stack":"TypeError: kafkaServices.KafkaServices is not a constructor\n    at Server.onListening (C:\\Users\\ENV\\Projects\\tool\\src\\server.js:149:17)\n    at Server.emit (events.js:198:13)\n    at emitListeningNT (net.js:1313:10)\n    at process._tickCallback (internal/process/next_tick.js:63:19)\n    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)\n    at startup (internal/bootstrap/node.js:283:19)\n    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)","exception":true,"date":"Thu Jul 02 2020 14:22:27 GMT-0400 (Eastern Daylight Time)","process":{"pid":22460,"uid":null,"gid":null,"cwd":"C:\\Users\\ENV\\Projects\\tool","execPath":"C:\\Program Files\\nodejs\\node.exe","version":"v10.16.3","argv":["C:\\Program Files\\nodejs\\node.exe","C:\\Users\\ENV\\Projects\\tool\\src\\server.js"],"memoryUsage":{"rss":41377792,"heapTotal":25980928,"heapUsed":16255176,"external":134547}},"os":{"loadavg":[0,0,0],"uptime":106081},"trace":[{"column":17,"file":"C:\\Users\\ENV\\Projects\\tool\\src\\server.js","function":"Server.onListening","line":149,"method":"onListening","native":false},{"column":13,"file":"events.js","function":"Server.emit","line":198,"method":"emit","native":false},{"column":10,"file":"net.js","function":"emitListeningNT","line":1313,"method":null,"native":false},{"column":19,"file":"internal/process/next_tick.js","function":"process._tickCallback","line":63,"method":"_tickCallback","native":false},{"column":11,"file":"internal/modules/cjs/loader.js","function":"Module.runMain","line":834,"method":"runMain","native":false},{"column":19,"file":"internal/bootstrap/node.js","function":"startup","line":283,"method":null,"native":false},{"column":3,"file":"internal/bootstrap/node.js","function":"bootstrapNodeJSCore","line":622,"method":null,"native":false}],"tag":"tool"}
{"error":{},"level":"error","message":"uncaughtException: kafkaServices.KafkaServices is not a constructor\nTypeError: kafkaServices.KafkaServices is not a constructor\n    at Server.onListening (C:\\Users\\ENV\\Projects\\tool\\src\\server.js:149:17)\n    at Server.emit (events.js:198:13)\n    at emitListeningNT (net.js:1313:10)\n    at process._tickCallback (internal/process/next_tick.js:63:19)\n    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)\n    at startup (internal/bootstrap/node.js:283:19)\n    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)","stack":"TypeError: kafkaServices.KafkaServices is not a constructor\n    at Server.onListening (C:\\Users\\ENV\\Projects\\tool\\src\\server.js:149:17)\n    at Server.emit (events.js:198:13)\n    at emitListeningNT (net.js:1313:10)\n    at process._tickCallback (internal/process/next_tick.js:63:19)\n    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)\n    at startup (internal/bootstrap/node.js:283:19)\n    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)","exception":true,"date":"Thu Jul 02 2020 14:22:27 GMT-0400 (Eastern Daylight Time)","process":{"pid":22460,"uid":null,"gid":null,"cwd":"C:\\Users\\ENV\\Projects\\tool","execPath":"C:\\Program Files\\nodejs\\node.exe","version":"v10.16.3","argv":["C:\\Program Files\\nodejs\\node.exe","C:\\Users\\ENV\\Projects\\tool\\src\\server.js"],"memoryUsage":{"rss":41385984,"heapTotal":25980928,"heapUsed":16300016,"external":142739}},"os":{"loadavg":[0,0,0],"uptime":106081},"trace":[{"column":17,"file":"C:\\Users\\ENV\\Projects\\tool\\src\\server.js","function":"Server.onListening","line":149,"method":"onListening","native":false},{"column":13,"file":"events.js","function":"Server.emit","line":198,"method":"emit","native":false},{"column":10,"file":"net.js","function":"emitListeningNT","line":1313,"method":null,"native":false},{"column":19,"file":"internal/process/next_tick.js","function":"process._tickCallback","line":63,"method":"_tickCallback","native":false},{"column":11,"file":"internal/modules/cjs/loader.js","function":"Module.runMain","line":834,"method":"runMain","native":false},{"column":19,"file":"internal/bootstrap/node.js","function":"startup","line":283,"method":null,"native":false},{"column":3,"file":"internal/bootstrap/node.js","function":"bootstrapNodeJSCore","line":622,"method":null,"native":false}],"tag":"tool"}
{"error":{},"level":"error","message":"uncaughtException: kafkaServices.KafkaServices is not a constructor\nTypeError: kafkaServices.KafkaServices is not a constructor\n    at Server.onListening (C:\\Users\\ENV\\Projects\\tool\\src\\server.js:149:17)\n    at Server.emit (events.js:198:13)\n    at emitListeningNT (net.js:1313:10)\n    at process._tickCallback (internal/process/next_tick.js:63:19)\n    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)\n    at startup (internal/bootstrap/node.js:283:19)\n    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)","stack":"TypeError: kafkaServices.KafkaServices is not a constructor\n    at Server.onListening (C:\\Users\\ENV\\Projects\\tool\\src\\server.js:149:17)\n    at Server.emit (events.js:198:13)\n    at emitListeningNT (net.js:1313:10)\n    at process._tickCallback (internal/process/next_tick.js:63:19)\n    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)\n    at startup (internal/bootstrap/node.js:283:19)\n    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)","exception":true,"date":"Thu Jul 02 2020 14:22:27 GMT-0400 (Eastern Daylight Time)","process":{"pid":22460,"uid":null,"gid":null,"cwd":"C:\\Users\\ENV\\Projects\\tool","execPath":"C:\\Program Files\\nodejs\\node.exe","version":"v10.16.3","argv":["C:\\Program Files\\nodejs\\node.exe","C:\\Users\\ENV\\Projects\\tool\\src\\server.js"],"memoryUsage":{"rss":41385984,"heapTotal":25980928,"heapUsed":16340888,"external":142739}},"os":{"loadavg":[0,0,0],"uptime":106081},"trace":[{"column":17,"file":"C:\\Users\\ENV\\Projects\\tool\\src\\server.js","function":"Server.onListening","line":149,"method":"onListening","native":false},{"column":13,"file":"events.js","function":"Server.emit","line":198,"method":"emit","native":false},{"column":10,"file":"net.js","function":"emitListeningNT","line":1313,"method":null,"native":false},{"column":19,"file":"internal/process/next_tick.js","function":"process._tickCallback","line":63,"method":"_tickCallback","native":false},{"column":11,"file":"internal/modules/cjs/loader.js","function":"Module.runMain","line":834,"method":"runMain","native":false},{"column":19,"file":"internal/bootstrap/node.js","function":"startup","line":283,"method":null,"native":false},{"column":3,"file":"internal/bootstrap/node.js","function":"bootstrapNodeJSCore","line":622,"method":null,"native":false}],"tag":"tool"}
{"timestamp": "2020-07-02T18:22:27.959Z","message":"Uncaught Exception.","scope":"ServerError","error":"TypeError. kafkaServices.KafkaServices is not a constructor", "stack":"TypeError: kafkaServices.KafkaServices is not a constructor
    at Server.onListening (C:\Users\ENV\Projects\tool\src\server.js:149:17)
    at Server.emit (events.js:198:13)
    at emitListeningNT (net.js:1313:10)
    at process._tickCallback (internal/process/next_tick.js:63:19)
    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)","origin":"undefined"}
{"timestamp":"2020-07-02T18:22:27.961Z","level":"error","app_name":"tool","message":"uncaughtException Error Message: kafkaServices.KafkaServices is not a constructor","label":{"label":"ServerError","scope":"ServerError"},"error_stack":"TypeError: kafkaServices.KafkaServices is not a constructor\n    at Server.onListening (C:\\Users\\ENV\\Projects\\tool\\src\\server.js:149:17)\n    at Server.emit (events.js:198:13)\n    at emitListeningNT (net.js:1313:10)\n    at process._tickCallback (internal/process/next_tick.js:63:19)\n    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)\n    at startup (internal/bootstrap/node.js:283:19)\n    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)","tag":"tool"}
{"timestamp":"2020-07-02T18:22:30.943Z","level":"info","app_name":"tool","message":"Process exit event with code 1.","scope":"Server","tag":"tool"}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! settings-tool@1.0.0 start: `node ./src/server.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the settings-tool@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\ENV\AppData\Roaming\npm-cache\_logs\2020-07-02T18_22_30_969Z-debug.log

我不完全确定为什么会出现这个错误,因为KafkaServices 有一个构造函数。任何意见,将不胜感激!谢谢

【问题讨论】:

    标签: node.js rest express apache-kafka


    【解决方案1】:

    KafkaServices 构造函数应该如下:

    constructor(){
            this.Producer = kafka.Producer,
            this.client = new kafka.KafkaClient();
            this.producer = new kafka.Producer(this.client);
    

    另外,更改server.js 如下解决了这个特定错误。

    var KafkaServices = require('./services/kafka-services');
    kafka = require('kafka-node');
    function onListening() {
        var addr = server.address();
        var bind = typeof addr === 'string'
          ? 'pipe ' + addr
          : 'port ' + addr.port;
        console.log('Listening on ' + bind);
        logInfo({message: `Server is Listening on http://localhost:${addr.port}.`, scope: 'Server'});
        kafkaTool = new KafkaServices();
        // Connect to kafka 
        kafkaTool.connect();
        kafkaTool.error();
    }
    

    【讨论】:

      猜你喜欢
      • 2020-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 2011-06-10
      • 2021-08-14
      相关资源
      最近更新 更多