Mam ten błąd podczas kompilowania kodu w node.js, jak mogę to naprawić?
RefernceError: fetch nie jest zdefiniowany
To jest funkcja, którą wykonuję, jest ona odpowiedzialna za odzyskiwanie informacji z konkretnej bazy danych filmów.
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);
});
}
javascript
node.js
jasa1704
źródło
źródło
fetch
nie jest standardową metodą nodejs - potrzebujesznode-fetch
fetch()
został zaprojektowany dla przeglądarki, a następnie przeniesiony do node.js w module strony trzeciej, którego najwyraźniej brakuje.request()
Lubrequest-promise()
biblioteka jest bardziej natywnie zbudowany node.js i obsługuje znacznie szerszy zakres opcji dla node.js tym strumieni, a metod uwierzytelniania zillion, etc ...Odpowiedzi:
API pobrać nie jest realizowany w węźle.
Musisz do tego użyć zewnętrznego modułu, takiego jak pobieranie węzłów .
Zainstaluj go w swojej aplikacji Node w ten sposób
następnie umieść poniższy wiersz na górze plików, w których używasz interfejsu API pobierania:
źródło
var
jest zmienna, polecamconst
ją zamiast tego ...Jeśli ma być dostępny w zasięgu globalnym
Jest to szybka, brudna poprawka, spróbuj wyeliminować użycie w kodzie produkcyjnym.
źródło
fetch
i automatycznie uzupełnił dostępne metody. Zgodziłem się, że należy tego unikać w produkcji, ale jest to bardzo pomocne dla lokalnego dewelopera!Możesz użyć pobierania krzyżowego z @lquixada
zainstalować
Stosowanie
Z obietnicami:
Z async / await:
źródło
ReferenceError: fetch is not defined
błędu zamazon-cognito-identity-js
.Dla tych, którzy również używają maszynopisu na node-js i otrzymują
ReferenceError: fetch is not defined
błądnpm install
te pakiety:Następnie uwzględnij:
źródło
amazon-cognito-identity-js
nie dotyczy tego pytania i nie trzeba go instalować, aby rozwiązać ten błąd. Nie jest to również związane z maszynopisem.Musisz użyć
isomorphic-fetch
modułu do swojegoNode
projektu, ponieważNode
nie zawieraFetch API
jeszcze. aby rozwiązać ten problem, uruchom poniższe polecenie:Po instalacji użyj poniższego kodu w swoim projekcie:
Mam nadzieję, że ta odpowiedź ci pomoże.
źródło
Najlepsza jest biblioteka Axios do pobierania. posługiwać się
npm i --save axios
do installng i używaj go jak pobierania, po prostu napisz axios zamiast pobierania, a następnie uzyskaj odpowiedź w then () .źródło
Node.js nie zaimplementował metody fetch (), ale możesz użyć jednego z zewnętrznych modułów tego fantastycznego środowiska wykonawczego dla JavaScript.
W jednej z powyższych odpowiedzi przytoczono „pobieranie węzłów” i to jest dobry wybór.
W folderze swojego projektu (katalogu, w którym masz skrypty .js) zainstaluj ten moduł za pomocą polecenia:
npm i node-fetch --save
Następnie użyj go jako stałej w skrypcie, który chcesz wykonać za pomocą Node.js, na przykład:
const fetch = require ("pobieranie węzłów");
źródło
To jest powiązany problem z githubem. Ten błąd jest związany z wersją 2.0.0, możesz go rozwiązać, po prostu aktualizując do wersji 2.1.0. Możesz biec
npm i [email protected]
źródło
Poniższe działa dla mnie w Node.js 12.x:
aby zainicjować instancję Dropbox:
aby np. załadować treść (metoda asynchroniczna używana w tym przypadku):
źródło