JS — ReferenceError: выборка не определена

#javascript

#javascript

Вопрос:

Я пытаюсь получить данные из sochain blockchain api с помощью javascript, но когда я запускаю свой код, я получаю сообщение об ошибке:

 ReferenceError: fetch is not defined
    at Object.<anonymous> (/workspace/Main.js:1:12)
    at Module._compile (internal/modules/cjs/loader.js:1137:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
    at Module.load (internal/modules/cjs/loader.js:985:32)
    at Function.Module._load (internal/modules/cjs/loader.js:878:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47
  

Итак, мой вопрос в том, что я делаю не так, почему выборка выдает эту ошибку? Мой код:

 var json = fetch('https://sochain.com/api/v2/address/LTC/LMSuo8W7CiXs8oFs1sJh77AQ54tCZM42Ay');
var obj = JSON.parse(json);
document.write(obj["data"]["received_value"]);
  

Комментарии:

1. Что вы используете? fetch должно сработать. Используете ли вы Node JS?

2. Это node.js ? Если нет, то какой это браузер / среда? В узле нет выборки, вам нужна библиотека, подобная node-fetch или какой-либо другой polyfill.

3. Попробуйте пакет Axios npmjs.com/package/axios

4. Я просто использую этот компилятор

5. paiza.io/projects/_BDmlB6wi4TZEWMZ8qawkg

Ответ №1:

Вы запускаете его на экземпляре JS узла в Paiza.io . Пожалуйста, используйте CodeSandbox или CodePen для запуска вашего кода. И вот… Paiza запускается на узле JS, а не в браузере.

В вашем примере вам нужно использовать fetch() этот способ:

 fetch(
  "https://sochain.com/api/v2/address/LTC/LMSuo8W7CiXs8oFs1sJh77AQ54tCZM42Ay"
)
  .then((res) => res.json())
  .then((obj) => document.write(obj["data"]["received_value"]));  

Вот песочница кода: захватывающий-bhaskara-sksve


API fetch() — это API браузера, реализованный в основных браузерах. Если вы планируете использовать то же самое во время выполнения Node JS, то вам необходимо использовать сторонние библиотеки выборки, такие как node-fetch .

Установить node-fetch :

 npm install node-fetch
  

Затем включите это в код.

 const fetch = require('node-fetch');
  

Если вы пытаетесь получить доступ к обычному тексту, используйте:

 fetch('https://example.com/')
    .then(res => res.text())
    .then(body => console.log(body));
  

Если вы используете JSON (ваше решение здесь), затем используйте:

 fetch('https://sochain.com/api/v2/address/LTC/LMSuo8W7CiXs8oFs1sJh77AQ54tCZM42Ay')
    .then(res => res.json())
    .then(json => console.log(json));
  

Другой альтернативой будет Axios, который представляет собой HTTP-клиент на основе обещаний для браузера и node.js . У вас есть потрясающая шпаргалка Axios, доступная для общего использования.

Установить axios :

 npm install axios
  

Затем включите это в код.

 const axios = require('axios');
  

Для вашего случая вы можете сделать:

 axios.get('https://sochain.com/api/v2/address/LTC/LMSuo8W7CiXs8oFs1sJh77AQ54tCZM42Ay')
  .then(function (response) {
    console.log(response);
  });
  

Комментарии:

1. Я очень новичок в JS, и я считаю, что то, что я пытаюсь сделать, это не NodeJS, потому что я просто пытаюсь сделать это на простой веб-странице, а не в приложении

2. @RichardCooper Тогда это должно сработать. Какой браузер вы используете? Потому что сообщение об ошибке выглядит аналогично сообщению об ошибке узла JS. Не могли бы вы показать скриншот, где возникает ошибка, пожалуйста? Вы запускаете его на экземпляре JS узла в Paiza.io . Пожалуйста, используйте CodeSandbox или CodePen для запуска вашего кода. И вот… Paiza запускается на узле JS, а не в браузере .

3. @PraveenKumarPurushotaman Я запустил код по URL-адресу этого проекта paiza.io/projects/_BDmlB6wi4TZEWMZ8qawkg

4. @RichardCooper Вы запускаете его на экземпляре JS узла в Paiza.io . Пожалуйста, используйте CodeSandbox или CodePen для запуска вашего кода в браузере. И вот… Paiza запускается на узле JS, а не в браузере .

5. @RichardCooper Уверен… Ожидание.