Tengo este error cuando compilo mi código en node.js, ¿cómo puedo solucionarlo?
ReferenceError: la búsqueda no está definida
Esta es la función que estoy haciendo, se encarga de recuperar información de una base de datos de películas en específico.
function getMovieTitles(substr){ pageNumber=1; let url = 'https://jsonmock.hackerrank.com/api/movies/search/?Title=' + substr + "&page=" + pageNumber; fetch(url).then((resp) => resp.json()).then(function(data) { let movies = data.data; let totPages = data.total_pages; let sortArray = []; for(let i=0; i<movies.length;i++){ sortArray.push(data.data[i].Title); } for(let i=2; i<=totPages; i++){ let newPage = i; let url1 = 'https://jsonmock.hackerrank.com/api/movies/search/?Title=' + substr + "&page=" + newPage; fetch(url1).then(function(response) { var contentType = response.headers.get("content-type"); if(contentType && contentType.indexOf("application/json") !== -1) { return response.json().then(function(json) { //console.log(json); //uncomment this console.log to see the JSON data. for(let i=0; i<json.data.length;i++){ sortArray.push(json.data[i].Title); } if(i==totPages)console.log(sortArray.sort()); }); } else { console.log("Oops, we haven't got JSON!"); } }); } }) .catch(function(error) { console.log(error); }); }La API de búsqueda no está implementada en Node.
Necesita usar un módulo externo para eso, como node-fetch .
Instálalo en tu aplicación Node así
npm install node-fetchluego coloque la línea a continuación en la parte superior de los archivos donde está utilizando la API de búsqueda:
import fetch from "node-fetch";Esta es una solución sucia rápida, intente eliminar este uso en el código de producción.
Si fetch tiene que ser accesible con un alcance global
import fetch from 'node-fetch' globalThis.fetch = fetchPuedes usar cross-fetch de @lquixada
Plataforma independiente: navegadores, nodo o reaccionar nativo
Instalar en pc
npm install --save cross-fetchUso
con promesas:
import fetch from 'cross-fetch'; // Or just: import 'cross-fetch/polyfill'; fetch('//api.github.com/users/lquixada') .then(res => { if (res.status >= 400) { throw new Error("Bad response from server"); } return res.json(); }) .then(user => { console.log(user); }) .catch(err => { console.error(err); });Con asíncrono/espera:
import fetch from 'cross-fetch'; // Or just: import 'cross-fetch/polyfill'; (async () => { try { const res = await fetch('//api.github.com/users/lquixada'); if (res.status >= 400) { throw new Error("Bad response from server"); } const user = await res.json(); console.log(user); } catch (err) { console.error(err); } })();