1. ホーム
  2. javascript

[解決済み] JS - ReferenceError: fetchが定義されていません。

2022-02-02 23:05:29

質問

javascriptを使用してsochain blockchain apiからデータを取得しようとしていますが、コードを実行するとエラーが表示されます。

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

そこで質問なのですが、なぜfetchがこのようなエラーを出すのでしょうか?私のコードは次のとおりです。

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

解決方法は?

Paiza.ioのNode JSインスタンスで動かしています。 コードサンドボックス または コードペン を実行してください。そして、ここで... Paizaはブラウザ上ではなく、Node JS上で動作します。 .

あなたの例では fetch() このように

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

これがコード・サンドボックスです。 エキサイティングバスカラースクベ


fetch() APIは、主要なブラウザに実装されているブラウザAPIです。Node JS ランタイムで同じものを使おうと思っているなら、次のようなサードパーティの Fetch ライブラリを利用する必要があります。 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));


もう一つの選択肢は アクシオス これはブラウザとnode.jsのためのPromiseベースのHTTPクライアントです。あなたは素晴らしい 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);
  });