如何从fetch()返回的ReadableStream中读取字符串数据?
在Node.js中把fetch返回的ReadableStream转为字符串
你不需要直接操作res.body这个ReadableStream,fetch的Response对象自带了便捷方法来解析流内容,根据响应格式选择对应的方法即可:
1. 解析为纯文本字符串
如果错误响应是文本、HTML这类格式,用text()方法(异步方法,需加await):
const res = await fetch(url); if (!res.ok) { console.log('Status:', res.status); console.log('StatusText:', res.statusText); const errorBody = await res.text(); console.log('错误响应内容:', errorBody); }
2. 解析为JSON对象
如果错误响应是JSON格式,用json()方法,同时可以加个异常捕获防止解析失败:
const res = await fetch(url); if (!res.ok) { console.log('Status:', res.status); console.log('StatusText:', res.statusText); try { const errorBody = await res.json(); console.log('错误响应内容:', errorBody); } catch (err) { // 解析JSON失败时,回退到文本格式读取 const errorText = await res.text(); console.log('错误响应内容(文本格式):', errorText); } }
补充说明
text()和json()会自动完成ReadableStream的读取、解析工作,不需要手动处理流的锁定、分段读取等底层逻辑,是最省心的处理方式。
内容的提问来源于stack exchange,提问作者delete
相关产品推荐
相关产品推荐

