打字稿错误 TS2345 错误:TS2345:“缓冲区”类型的参数不可分配给“字符串”类型的参数

新手上路,请多包涵

打字稿的新手。我正在从 RabbitMQ 通道读取一些数据并将其转换为 JSON 对象。在这一行中,我得到了错误

让communicationInformation = JSON.parse(newCommunication.content);

TS2345:“缓冲区”类型的参数不可分配给“字符串”类型的参数。

我需要转换数据吗?我正在使用打字稿 2.4.1

  Amqplib.connect(amqpLibUrl, (err, connection) => {
if (!err) {
    connection.createChannel((err, channel) => {
        channel.consume('QueueName', newCommunication => {
            if (newCommunication != null) {
                let communicationInformation = JSON.parse(newCommunication.content);
                // Code
            }
        })
    })
}
});

原文由 Rahul Ganguly 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 714
2 个回答

我认为错误是在 JSON.parse 的输入参数上引发的。尝试首先调用 toString 然后传递给函数。

 let communicationInformation = JSON.parse(newCommunication.content.toString());

原文由 Suren Srapyan 发布,翻译遵循 CC BY-SA 3.0 许可协议

我不确定什么是 newCommunication.content。在我的例子中,它是一个文件,我必须为 fs.readFileSync 指定编码:

  const level = JSON.parse(fs.readFileSync('./path/to/file.json', 'utf-8'));

原文由 Konrad Grzyb 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题