You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript报错:Cannot call class as a function 问题求助

解决 "Cannot call a class as function" 错误——PubNubOutStream 问题

我一眼就揪出问题所在啦!你在 PubNubOutStream 里初始化 PubNub 实例的时候犯了个小疏漏:pubnub 是类构造函数,必须用 new 关键字来实例化,不能直接像普通函数那样调用。

问题根源

看你这段代码:

var pn = pubnub(cfg);

当前的 PubNub Node.js SDK 中,pubnub 是一个类,直接调用它会触发你看到的 TypeError: Cannot call a class as function 错误——类必须通过 new 关键字才能创建实例。

修复方案

把上面那行代码改成:

var pn = new pubnub(cfg);

修改后的完整 PubNubOutStream 函数

function PubNubOutStream(cfg, channel) {
  Writable.call(this,{objectMode:true});
  // 关键修复:添加 new 关键字初始化 PubNub 实例
  var pn = new pubnub(cfg);
  this._write = function(obj, encoding, callback) {
    pn.publish({
      channel: channel,
      message: obj,
      callback: () => callback()
    });
  };
}
util.inherits(PubNubOutStream, Writable);

额外小提醒

你还可以把 _write 改成箭头函数,这样能避免潜在的 this 指向问题,不过当前写法也能正常工作。另外记得确认你的 PubNub 密钥配置正确,避免后续出现权限相关的报错。

这样修改后,你的流处理程序应该就能正常把 Twitter 数据流推送到 PubNub 频道啦!

内容的提问来源于stack exchange,提问作者William Howell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:01:18