Неожиданный токен g JSON в позиции 0 при разборе файла - PullRequest
0 голосов
/ 25 марта 2020
https.get('example.com/phpfilethatechoesandimtryingtograbtheecho.php', (res) => {
   console.log('statusCode:', res.statusCode);
   onsole.log('headers:', res.headers);

   res.on('data', (d) => {
       return msg.reply(JSON.parse(d));
   });

}).on('error', (e) => {
   throw e;
});

Я пытаюсь получить эхо с этого php веб-сайта. Я попытался Express с app.get (), но он не смог console.log (). Я не знаю, почему он ничего не выдавал с Express, но не мог вывести.

Эта вещь, в которой я ищу ответ, работает, когда я выводил "d", используя process.stdout.write(). Под "d" я подразумеваю d, который здесь res.on('data', (**d**)).

. Мне также удалось получить это {"type":"Buffer","data":[103,75,68,101,54,78,109,77,117,65,83,67,52,86,81,88,113,106,101,81,77,86,71,66,90,68,112,100,71,76,103,51]}, когда я зачеркнул "d" и ответил на мое сообщение о Discord.

1 Ответ

0 голосов
/ 25 марта 2020

res в вашем https.get - это поток. Теперь в потоке есть несколько событий, data является одним из них. Когда вы слушаете событие data, вы получаете блок данных .

То есть для файла JSON, который вы получаете с вашего сервера (в данном случае ваш * 1023) * file) d является частью всего этого.

Существует еще одно событие, называемое end, которое, проще говоря, запускается, когда в потоке нет данных (означает, что все данные отправлены вам ). Таким образом, вам нужно использовать событие end для фактической обработки данных, так как все данные теперь с вами.

Я добавляю фрагмент кода, который может вам помочь:

https
  .get("url", res => {
    console.log("statusCode:", res.statusCode);
    console.log("headers:", res.headers);
    let responseData = "";
    res.on("data", d => {
      //store the chunks in a variable
      responseData += d;
    });
    res.on("end", () => {
      //here now you have all the data, so parse the data
      msg.reply(JSON.parse(responseData));
    });
  })
  .on("error", e => {
    throw e;
  });

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...