failed to execute 'json' on 'response': body stream already read
时间: 2023-10-29 22:03:13 浏览: 63
这个错误提示通常是在使用 JavaScript 解析响应 body 时发生的。它是由于在请求的响应 body 已经被读取后,再次尝试解析 body 导致的。
该错误通常出现在以下两种情况下:
1. 请求多次使用响应对象(Response)的 body。
在 JavaScript 中,请求的响应对象的 body 是一个只能读取一次的流(stream),一旦读取,就无法再次读取。如果在读取 body 后,再次尝试读取或解析,就会出现上述错误。
解决方法是确保只读取一次 body。可以将 body 存储在变量中,以便多次使用,而不是多次读取。
2. 通过 `response.json()` 方法解析 body 多次。
在使用 `response.json()` 方法时,实际上是将 body 转化为了 JSON 对象。但是由于 body 是只能读取一次的流,当第一次调用 `response.json()` 后,body 已经被解析为 JSON 对象,并且流已被读取。
如果再次调用 `response.json()`,就会尝试再次解析已被读取的 body,因此会出现错误。
解决方法是将解析后的 JSON 对象存储在变量中,以便多次使用,而不是多次调用 `response.json()` 方法。
综上所述,要解决 "failed to execute 'json' on 'response': body stream already read" 错误,需要确保请求的响应 body 只读取一次,或者将解析后的结果存储在变量中。这样就可以避免多次尝试解析已被读取的 body,从而成功解决错误。