curso-gratuito-svelte icon indicating copy to clipboard operation
curso-gratuito-svelte copied to clipboard

res.ok is not a function

Open ferserc1 opened this issue 3 years ago • 3 comments

El problema es que ok es un atributo, no una función. Si se muestra el error en el template de Svelte indica de dónde viene el fallo.

{:catch error}
    <strong>❌ {error.message}</strong>
{/await}
res.ok is not a function

El problema es que sustituyendo res.ok() por res.ok tampoco se soluciona, porque hay usar throw para lanzar el error. Si simplemente devolvemos el error, lo caza el siguiente then, y el error que muestra es res.json is not a function

Como no podemos usar throw en una closure de una sola línea, al final me ha quedado así:

response = fetch(`https://www.omdbapi.com/?s=${value}&apikey=api_key`)
            .then(res => {
                if (!res.ok) {
                    throw new Error("Something bad happened with the fetching of movies")
                }
                else {
                    return res;
                }
            })
            .then(res => res.json())
            .then(apiResponse => apiResponse.Search || []);

ferserc1 avatar Mar 31 '21 08:03 ferserc1

Gracias por la solución aportada

yasielhp avatar Aug 28 '21 19:08 yasielhp

es justo lo que me pasaba, sin embargo en el video de midu parece funcionar res.ok(); y no podía encontrar este metodo en MDN, baje este repo y despues de >npm install bajó las dependencias pero el >npm run dev: me sale un error y no deja compilar posiblemente cambiaron algo en el rollup........; de todos modos lo he echo desde las dependencias actuales y todo funciona correctamente..... Pero me había quedado justo en este apartado..... Muchas gracias por la solución.

Sin embargo todavía me queda la duda; de donde salió este método res.ok() que usa midu (cambio algo en los métodos de fetch desde hace un par de años?)

ueliot avatar Dec 29 '21 18:12 ueliot

Y así?

response = fetch(`https://www.omdbapi.com/?s=${value}&apikey=api_key`)
            .then(res => res.ok ? res : new Error('Something bad happened with the fetching of movies'))
            .then(res => res.json())
            .then(apiResponse => apiResponse.Search || []);

YerayAlonso avatar May 19 '22 19:05 YerayAlonso