in

javascript: obteniendo «TypeError: no se pudo recuperar» cuando la solicitud no ha fallado realmente

apple touch icon@2

Entiendo que esta pregunta podría tener una causa específica de React, pero aparece primero en los resultados de búsqueda para «Typeerror: No se pudo recuperar» y quería exponer todas las causas posibles aquí.

La especificación Fetch enumera los momentos en los que arroja un TypeError desde la API Fetch: https://fetch.spec.whatwg.org/#fetch-api

A continuación, se muestran los pasajes relevantes a enero de 2021. Estos son extractos del texto.

4.6 Recuperación de la red HTTP

Para realizar una búsqueda de red HTTP mediante una solicitud con una marca de credenciales opcional, ejecute estos pasos:

16. Ejecute estos pasos en paralelo:

2. Si se cancela, entonces:

3. De lo contrario, si el flujo es legible, error en el flujo con TypeError.

Para agregar un par nombre / valor nombre / valor a un objeto Encabezados (encabezados), ejecute estos pasos:

  1. Normalizar valor.
  2. Si el nombre no es un nombre o el valor no es un valor, entonces lanza un TypeError.
  3. Si la protección de los encabezados es «inmutable», lanza un TypeError.

Llenar los encabezados de los objetos Headers con un objeto determinado:

Para llenar los encabezados de un objeto Headers con un objeto determinado, ejecute estos pasos:

  1. Si el objeto es una secuencia, entonces para cada encabezado del objeto:
    1. Si el encabezado no contiene exactamente dos elementos, arroje un TypeError.

Los pasos del método a veces arrojan TypeError:

Los pasos del método de eliminación (nombre) son:

  1. Si el nombre no es un nombre, lanza un TypeError.
  2. Si la guardia de este es «inmutable», entonces lanza un TypeError.

Los pasos del método get (name) son:

  1. Si el nombre no es un nombre, lanza un TypeError.
  2. Devuelve el resultado de obtener el nombre de esta lista de encabezados.

Los pasos del método has (nombre) son:

  1. Si el nombre no es un nombre, lanza un TypeError.

Los pasos del método set (nombre, valor) son:

  1. Normalizar valor.
  2. Si el nombre no es un nombre o el valor no es un valor, entonces lanza un TypeError.
  3. Si la guardia de este es «inmutable», entonces lanza un TypeError.

Para extraer un cuerpo y un Content-Type valor del objeto, con un keepalive booleano opcional (por defecto falso), ejecute estos pasos:

5. Encienda el objeto:

ReadableStream
Si keepalive es verdadero, entonces lanza un TypeError.
Si el objeto está perturbado o bloqueado, lanza un TypeError.

En la sección «Body mixin» si estás usando FormData hay varias formas de lanzar un TypeError. No los he enumerado aquí porque haría que esta respuesta sea muy larga. Pasajes relevantes: https://fetch.spec.whatwg.org/#body-mixin

En la sección «Request Class», el nuevo constructor Request (input, init) es un campo minado de posibles TypeErrors:

Los nuevos pasos del constructor Request (input, init) son:

6. Si la entrada es una cadena, entonces:

2. Si parsedURL es un error, arroje un TypeError.
3. SI parsedURL incluye credenciales, arroje un TypeError.

11. Si init[«window»] existe y no es nulo, luego lanza un TypeError.

15. Si init[«referrer» exists, then:

1. Let referrer be init[«referrer»].
2. Si referente es la cadena vacía, entonces establezca el referente de la solicitud en «no-referrer».
3. De lo contrario:
1. Sea parsedReferrer el resultado de analizar el referrer con baseURL.
2. Si parsedReferrer falla, arroje un TypeError.

18. Si el modo es «navegar», entonces lanza un TypeError.

23. Si el modo de caché de la solicitud es «solo si se almacena en caché» y el modo de la solicitud no es «mismo origen», entonces lanza un TypeError.

27. Si init[«method»] existe, entonces:

2. Si el método no es un método o el método es un método prohibido, arroje un TypeError.

32. Si el modo de esta solicitud es «no-cors», entonces:
1. Si el método de esta solicitud no es un método protegido por CORS, arroje un TypeError.

35. Si cualquiera de init[«body»] existe y no es nulo o inputBody no es nulo, y el método de la solicitud es GET o HEAD, luego lanza un TypeError.

38. Si body no es nulo y la fuente del cuerpo es nula, entonces:
1. Si el modo de esta solicitud no es «mismo origen» ni «cors», entonces lanza un TypeError.

39. Si inputBody es body y input está perturbado o bloqueado, entonces lanza un TypeError.

Los pasos del método clone () son:

  1. Si esto está alterado o bloqueado, entonces lanza un TypeError.

En la clase Respuesta:

Los nuevos pasos del constructor Response (body, init) son:

2. Si init[«statusText»] no coincide con la producción del token de frase de motivo, luego arroja un TypeError.

8. Si el cuerpo no es nulo, entonces:
1. Si init[«status»] es un estado de cuerpo nulo, luego arroja un TypeError.

Los pasos del método de redireccionamiento estático (url, estado) son:

2. Si parsedURL falla, genere un TypeError.

Los pasos del método clone () son:

  1. Si esto está alterado o bloqueado, entonces lanza un TypeError.

En la sección «El método Fetch»

Los pasos del método de recuperación (entrada, inicio) son:

9. Ejecute lo siguiente en paralelo:
Para procesar respuesta por respuesta, ejecute estos subpasos:

3. Si la respuesta es un error de red, rechace p con un TypeError y finalice estos subpasos.

Además de estos problemas potenciales, existen algunos comportamientos específicos del navegador que pueden generar un TypeError. Por ejemplo, si establece keepalive en verdadero y tiene una carga útil> 64 KB, obtendrá un TypeError en Chrome, pero la misma solicitud puede funcionar en Firefox. Estos comportamientos no están documentados en la especificación, pero puede encontrar información sobre ellos buscando en Google las limitaciones de cada opción que está configurando en la búsqueda.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Estadísticas – Combinación

FDBmTPhWyg9CRcb88BZggP 1200 80

Ubicaciones de esturión de AC Valhalla Wrath of the Druids