NextJS 14.1.0 Server Action报错TypeError: Body is unusable求助
解决NextJS 14.1.0中Server Action的TypeError: Body is unusable问题
问题根源
你在AccountVeficationAction函数里连续两次调用了await response.json()——HTTP Response的body是一次性可读流,第一次调用json()已经把流消费完毕,第二次再尝试读取就会触发"Body is unusable"错误。
修复代码
把响应数据先存入变量,再复用这个变量即可解决问题,修改后的/src/app/auth/_utils/actions/action.ts代码如下:
export const AccountVeficationAction = async (body: any) => { try { const response = await fetch(`${BASEURL}/auth/confirm-account`, { method: "POST", headers: { "Content-Type": "application/json", // Add other necessary headers (e.g., authorization) }, body: JSON.stringify(body), }); // 先将响应数据存入变量,避免重复读取body流 const responseData = await response.json(); console.log(responseData); return responseData; } catch (error) { console.log(error); return { success: false, message: "Something went wrong!", }; } };
补充说明
- Response对象的
json()、text()、blob()等读取body的方法都是一次性的,调用后body流会被关闭,无法再次读取 - 若需要多次使用响应内容,必须先将结果存储到变量中复用
内容的提问来源于stack exchange,提问作者Musiur Alam Opu
相关产品推荐
相关产品推荐

