调用Pusher的trigger方法返回"expected string"错误如何解决?
解决方案
原因说明
400状态码代表Pusher服务端判定请求参数非法,你已经确认核心配置值正确的前提下,报错提示expected string说明请求里存在非字符串类型的参数,不符合服务端要求。
排查步骤
- 检查初始化参数的类型,所有配置项必须为字符串类型
最常见的错误是appId参数直接传入数字类型,没有转成字符串。请确认你的配置中appId、key、secret、cluster所有值都用引号包裹,为字符串格式:// 错误写法:appId为数字类型 const pusher = new Pusher({ appId: 123456, key: "xxx", secret: "xxx", cluster: "ap2", useTLS: true, }) // 正确写法:所有配置项为字符串类型 const pusher = new Pusher({ appId: "123456", key: "xxx", secret: "xxx", cluster: "ap2", useTLS: true, }) - 确认初始化参数无误后,检查
trigger方法参数格式
当前你写的trigger调用参数是符合规范的,如果你后续扩展参数,注意channel、event参数必须为字符串类型。如果是老版本SDK兼容问题,可以手动将事件数据转成JSON字符串测试:pusher.trigger('my-channel', 'my-event', JSON.stringify({ message: "Hello, world." })).then(console.log).catch(e=> console.log(e)) - 上述操作都无效的话,重装最新版本Pusher依赖
部分旧版本Pusher Node SDK存在参数校验bug,可以执行以下命令更新:npm uninstall pusher && npm install pusher@latest
内容的提问来源于stack exchange,提问作者Scoopa
相关产品推荐
相关产品推荐

