在ioBroker JavaScript中使用Streamer.bot官方客户端遇构造报错求助
问题
我希望在ioBroker的JavaScript实例中,使用Streamer.bot官方客户端连接其WebSocket服务,已完成以下操作:
- 在JavaScript实例中添加npm源
@streamerbot/client - 在Streamer.bot中配置对应IP的WebSocket服务器,防火墙已开放
但编写代码构造客户端实例时,始终报错:
javascript.0 (19364) script.js.streaming.Streamer_bot: TypeError: StreamerbotClient is not a constructor
原生WebSocket连接可成功,但希望使用官方专用客户端,请问遗漏了什么?
构造客户端的代码
let sbServerAddress = '192.168.0.38'; let sbServerPort = '9090'; const StreamerbotClient = require('@streamerbot/client'); const client = new StreamerbotClient({ host: sbServerAddress, port: sbServerPort, endpoint: '/' });
原生WebSocket连接代码
const WebSocketClient = require('websocket').client; function connectws() { const ws = new WebSocketClient(); // 重连 ws.on('close', function () { console.log('Websocket closed'); setTimeout(connectws, 5000); }); ws.on('connectFailed', function(error) { console.log('Connect Error: ' + error.toString()); }); ws.on('connect', function (connection) { console.log('Websocket opened'); }); ws.connect("ws://" + sbServerAddress + ":" + sbServerPort + "/", null); } connectws();
解决方案
1. 修正导入方式
@streamerbot/client采用命名导出而非默认导出,直接require整个模块会拿到包含构造函数的对象,而非构造函数本身,导致报错。修改导入语句为:
const { StreamerbotClient } = require('@streamerbot/client');
2. 确认包已正确安装
添加npm源后需确保包已成功安装:
- 进入ioBroker的JavaScript实例设置
- 在「额外的npm模块」中移除
@streamerbot/client,保存后重新添加并再次保存,触发重新安装 - 查看实例日志,确认无安装失败提示
3. 检查版本兼容性
确保安装的@streamerbot/client版本与Streamer.bot服务器版本匹配,版本不兼容可能导致导出结构或功能异常。
4. 验证配置参数
核对官方客户端的配置参数,比如endpoint是否符合Streamer.bot的WebSocket端点设置,部分场景下端点可能不是默认的/。
内容的提问来源于stack exchange,提问作者SuperNova
相关产品推荐
相关产品推荐

