Что означает ошибка «максимального перенаправления» в fetch-api? - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь получить некоторые данные с веб-сайта, но получаю следующую ошибку:

{ FetchError: maximum redirect reached at: <URL>
    at ClientRequest.<anonymous> (C:\Users\Michal\Desktop\argentina\node_modules\node-fetch\lib\index.js:1498:15)
    at ClientRequest.emit (events.js:198:13)
    at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:556:21)
    at HTTPParser.parserOnHeadersComplete (_http_common.js:109:17)
    at TLSSocket.socketOnData (_http_client.js:442:20)
    at TLSSocket.emit (events.js:198:13)
    at addChunk (_stream_readable.js:288:12)
    at readableAddChunk (_stream_readable.js:269:11)
    at TLSSocket.Readable.push (_stream_readable.js:224:10)
    at TLSWrap.onStreamRead (internal/stream_base_commons.js:94:17)
  message:
   'maximum redirect reached at: <URL>',
  type: 'max-redirect' }

Код:

const fetch = require("node-fetch");
const asyncFuncAsYouAsked = async () => {
    try {
        const response = await fetch(URL);
        const myJson = await response.json();
        let data = JSON.stringify(myJson);
        fs.writeFileSync('data.json', data);
        console.log(data);
    } catch(e) {
        console.log("EROOOOR:");
        console.dir(e);
    } 
}
 asyncFuncAsYouAsked();

, что достигается при максимальном перенаправлении:«ошибка означает, и каково решение этой проблемы?

1 Ответ

0 голосов
/ 10 ноября 2019

Судя по всему, запрашиваемая вами страница перенаправляется на другую страницу. Возможно, вы запрашиваете по протоколу http, а он, например, перенаправляет на https.

Если нет, возможно, вы все равно можете получить данные, которые пытаетесь получить, настроив redirect и * 1004. * опция-настройки . Что-то вроде:

const fetch = require("node-fetch");
const asyncFuncAsYouAsked = async () => {
    try {
        let options = {};
        options.redirect = "follow";
        options.follow = 20;
        const response = await fetch(URL,options);
        const myJson = await response.json();
        let data = JSON.stringify(myJson);
        fs.writeFileSync('data.json', data);
        console.log(data);
    } catch(e) {
        console.log("EROOOOR:");
        console.dir(e);
    } 
}
 asyncFuncAsYouAsked();
...