我正在构建一个简单的流,以便在PubNub上发布并稍后使用。我可以成功地使用单独的函数将输出记录到控制台,甚至可以使用.pipe(new function())
创建.json文件。但是出于某种原因,这个函数让我无法调用类函数。我没有在代码末尾更改函数调用的语法,所以我假设它是PubNubStreamOut()函数本身的东西。
TypeError:无法将类作为函数调用 在_classCallCheck(D:\ pasco \ node_modules \ pubnub \ lib \ node \ index.js:27:99) 在_class(D:\ pasco \ node_modules \ pubnub \ lib \ node \ index.js:37:5) 在新的PubNubOutStream(D:\ pasco \ pubnub.js:24:13) 在对象。 (d:\帕斯科\ pubnub.js:54:42) 在Module._compile(module.js:635:30) at Object.Module._extensions..js(module.js:646:10) 在Module.load(module.js:554:32) 在tryModuleLoad(module.js:497:12) 在Function.Module._load(module.js:489:3) 在Function.Module.runMain(module.js:676:10)
.js文件如下:
var pubnub = require('pubnub');
var util = require('util');
var Readable = require('stream').Readable;
var Writable = require('stream').Writable;
var Twitter = require('twitter');
var pncfg = {
ssl : true, // enable TLS Tunneling over TCP
publish_key : "PUB_KEY",
subscribe_key : "SUB_KEY"
};
var twcfg = {
consumer_key:"...",
consumer_secret:"...",
access_token_key:"...",
access_token_secret:"..."
}
function PubNubOutStream(cfg, channel) {
Writable.call(this,{objectMode:true});
var pn = pubnub(cfg);
this._write = function(obj, encoding, callback) {
pn.publish({
channel: channel,
message: obj,
callback: () => callback()
});
};
}
util.inherits(PubNubOutStream, Writable);
function TwitterStream(cfg, query) {
Readable.call(this,{objectMode:true});
var client = new Twitter(cfg);
this._read = function() { /* do nothing */ };
var self = this;
function connect() {
client.stream('statuses/filter', {track: query},
function(stream) {
stream.on('data', (tweet) => self.push(tweet));
stream.on('error', (error) => connect());
});
}
connect();
}
util.inherits(TwitterStream, Readable);
new TwitterStream(twcfg,"#twitter").pipe(new PubNubOutStream(pncfg,"awesome-tweets"));
由于我使用new PubNubOutStream()
答案 0 :(得分:1)
根据PubNub的documentation,你应该使用以下语法来创建一个新实例:
var PubNub = require('pubnub');
var pn = new PubNub({
publishKey : 'demo',
subscribeKey : 'demo'
});
错误是由于您将PubNub构造函数作为函数调用的事实:
var pn = pubnub(cfg);
错误消息确认:
TypeError:无法在_classCallCheck
中将类作为函数调用
希望这会让你回到正轨。