ReferenceError: выборка не определена
У меня есть эта ошибка, когда я компилирую свой код в node.js, как я могу это исправить?
RefernceError: выборка не определена
Это функция, которую я выполняю, она отвечает за восстановление информации из конкретной базы данных фильмов.
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);
});
}
Ответы
Ответ 1
API извлечения не реализован в Node.
Для этого вам нужно использовать внешний модуль, например, node-fetch.
Установите его в своем приложении Node, как это
npm i node-fetch --save
затем поместите строку ниже в верхней части файлов, где вы используете API выборки:
const fetch = require("node-fetch");
Ответ 2
Если он должен быть доступен с глобальным охватом
global.fetch = require("node-fetch");
Это быстрое грязное исправление, попробуйте исключить использование в производственном коде.
Ответ 3
Вы можете использовать перекрестную выборку от @lquixada
Независимость от платформы: браузеры, узлы или реагировать нативно
устанавливать
npm install --save cross-fetch
использование
С обещаниями:
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);
});
С асинхронным ожиданием:
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);
}
})();
Ответ 4
Вы должны использовать модуль isomorphic-fetch
для вашего проекта Node
поскольку Node
еще не содержит Fetch API
. для исправления этой проблемы выполните следующую команду:
npm install --save isomorphic-fetch es6-promise
После установки используйте нижеприведенный код в своем проекте:
import "isomorphic-fetch"
Надеюсь, этот ответ вам поможет.
Ответ 5
Лучшая из них - библиотека Axios для загрузки. используйте npm я --save axios
для установки и используйте его как fetch, просто напишите axios вместо fetch и затем получите ответ в then().
Ответ 6
Для тех, кто также использует машинописный текст на node-js и получает ошибку ReferenceError: fetch is not defined
ошибкой
npm install
эти пакеты:
"amazon-cognito-identity-js": "3.0.11"
"node-fetch": "^2.3.0"
Затем включите:
import Global = NodeJS.Global;
export interface GlobalWithCognitoFix extends Global {
fetch: any
}
declare const global: GlobalWithCognitoFix;
global.fetch = require('node-fetch');