JavaScript fetch - 未能在“响应”上执行“json”:body stream被锁定
2022-08-30 04:06:45
我也遇到了这个错误,但发现它与响应状态无关,真正的问题是你只能消费一次,如果你消费了不止一次,错误就会发生。Response.json()
如下图所示:
fetch('http://localhost:3000/movies').then(response =>{
console.log(response);
if(response.ok){
console.log(response.json()); //first consume it in console.log
return response.json(); //then consume it again, the error happens
}
因此,解决方案是避免在块中消耗多次。Response.json()
then
根据MDN,你应该使用React.clone()
:
Response
接口的方法创建响应对象的克隆,该对象在各个方面都相同,但存储在不同的变量中。存在的主要原因是允许Body
对象的多种用途(当它们仅一次性使用时)。clone()
clone()
示例:
fetch('yourfile.json').then(res=>res.clone().json())