2017-10-20 70 views
3

我现在面临一个问题,在取作出反应,它给了我一个不完整的响应,所以当我解析响应为JSON,这是我返回一个错误。反应取给了我一个截断的JSON响应

代码:

export default async (url, body = null, method = 'GET') => { 
    let config = { 
     method, 
    }; 
    try { 
     const response = await fetch(url, config); 
     if (!response.ok) { 
      throw new Error(response.statusText); 
     } 
     return await response.json(); 
    } catch (error) { 
     console.warn(error); 
     throw error; 
    } 
}; 

响应日志: Response log

是否获取的最大响应大小?如果是,如何增加它?

回答

4

有没有最大限制,以获取响应大小。

在你的情况下,错误意味着你正在阅读的响应主体不止一次。尝试用Body.bodyUsed来保护.json()呼叫。

https://developer.mozilla.org/en-US/docs/Web/API/Body

+0

它是一个异步功能,所以它会被称为不止一次,不是吗?你的意思是,我需要在'.json()'调用中验证'bodyUsed'是否为真? –

+0

@JustinusHermawan参见[从重读响应正文JavaScript的获取](https://stackoverflow.com/questions/40497859/reread-a-response-body-from-javascripts-fetch/),[如何的JSON下载使用取?在JavaScript(https://stackoverflow.com/questions/46797810/how-do-download-of-json-using-fetch-in-javascript/) – guest271314

+0

@ guest271314我没有用'TypeErrror任何问题:已经阅读过',这只是因为我正在用'response.text()'进行调试,只是忽略它。 我的问题是在截断JSON响应,如我在'response.text()'日志中看到的。 –