রেফারেন্স এরিয়ার: আনার সংজ্ঞা দেওয়া হয়নি


177

আমার কোডটি নোড.জেজে সংকলন করার সময় আমার এই ত্রুটি রয়েছে, আমি কীভাবে এটি সংশোধন করতে পারি?

রেফারেন্সরিয়ার: আনতে সংজ্ঞা দেওয়া হয়নি

এখানে চিত্র বর্ণনা লিখুন

এটি আমি করছি এমন ফাংশন, এটি নির্দিষ্ট মুভি ডাটাবেস থেকে তথ্য পুনরুদ্ধারের জন্য দায়ী।

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);
  });   
}

4
এসও-তে আপনাকে স্বাগতম, আপনি এতক্ষণ কী চেষ্টা করেছেন তার বিশদ সরবরাহ করুন? যেখানে প্রয়োজন সেখানে দয়া করে একটি ন্যূনতম, সম্পূর্ণ এবং যাচাইযোগ্য উদাহরণ সরবরাহ করুন । এছাড়াও দয়া করে জিজ্ঞাসা করার
প্রতিভা

3
fetchকোনও স্ট্যান্ডার্ড নোডেজ পদ্ধতি নয় - আপনার প্রয়োজনnode-fetch
জারোমন্ডা এক্স

3
fetch()ব্রাউজারের জন্য ডিজাইন করা হয়েছিল এবং তারপরে তৃতীয় পক্ষের মডিউলে নোড.জেএস-তে ব্যাক-পোর্ট করা হয়েছিল যার মধ্যে আপনি দৃশ্যত নিখোঁজ রয়েছেন। request()বা request-promise()গ্রন্থাগার আরো স্থানীয়ভাবে Node.js জন্য নির্মিত এবং স্ট্রিম, একটি অপরিমেয় প্রমাণীকরণ পদ্ধতি, ইত্যাদি সহ Node.js জন্য বিকল্প একটি অনেক বৃহত্তর পরিসর সমর্থন করা হয় ...
jfriend00

উত্তর:


316

আনা এপিআই নোড বাস্তবায়িত হয় না।

নোড-আনার মতো আপনাকে এর জন্য একটি বাহ্যিক মডিউল ব্যবহার করতে হবে ।

এটি আপনার নোড অ্যাপ্লিকেশনটিতে এটি ইনস্টল করুন

npm i node-fetch --save

তারপরে নীচে লাইনটি সেই ফাইলগুলির শীর্ষে রাখুন যেখানে আপনি আনতে হবে API:

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

21
varপরিবর্তনযোগ্য, আমি constপরিবর্তে এটি ব্যবহার করা উচিত পরামর্শ ...
এডউইন প্রট

3
@ jasa1704 আপনি একটি উত্তর চয়ন করতে পারেন?
টেকনোক্র্যাট

36

এটি যদি বিশ্বব্যাপী সুযোগের সাথে অ্যাক্সেসযোগ্য হতে হয়

global.fetch = require("node-fetch");

এটি একটি দ্রুত নোংরা ফিক্স, প্রোডাকশন কোডের ব্যবহার বাদ দেওয়ার চেষ্টা করুন।


1
এই একমাত্র উপায় ছিল যে আমি ওয়েবস্টোরমকে প্রদত্ত প্রতিশ্রুতি স্বীকৃত করতে fetchএবং উপলব্ধ পদ্ধতিগুলি স্বতঃপূরণ করতে সক্ষম হয়েছি । সম্মতি দিয়েছেন যে এটি উত্পাদন এড়ানো উচিত, তবে স্থানীয় দেবের পক্ষে খুব সহায়ক!
ফক্সমল্ডার900

18

আপনি @ লিকুইক্সাডা থেকে ক্রস-ফেচ ব্যবহার করতে পারেন

প্ল্যাটফর্ম অজ্ঞেয়: ব্রাউজার, নোড বা নেটিভ প্রতিক্রিয়া

ইনস্টল করুন

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);
  }
})();

এটি মেটাওয়েদার এপিআইয়ের পক্ষে সহায়তা করেছে, গিথুব ডকুমেন্টেশনে ভালভাবে ব্যাখ্যা করা হয়েছে। ভাগ করে
নেওয়ার

ক্রসফ্যাচের পলিফিল ব্যবহার করা টাইপস্ক্রিপ্ট এবং নোড ব্যবহার করে এবং ReferenceError: fetch is not definedত্রুটিটি গ্রহণ করে আমার পক্ষেও কাজ করেছিল amazon-cognito-identity-js
জন হামেলিং

7

তাদের জন্য আরো ব্যবহার টাইপ করা বিষয় উপর নোড-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');

28
amazon-cognito-identity-jsএই প্রশ্নের সাথে প্রাসঙ্গিক নয় এবং এই ত্রুটিটি সমাধান করার জন্য ইনস্টল করার প্রয়োজন নেই। এটি টাইপস্ক্রিপ্টের সাথেও সম্পর্কিত নয়।
cnvzmxcvmcx

ওহে! সুতরাং আমি ঠিক একই সমস্যা করছি, কিন্তু এটি এখনও কিছু ঠিক করে না, আপনার চারপাশে অন্য কোনও কাজ আছে?
মাসনাদ নিহিত

5

isomorphic-fetchআপনার Nodeপ্রকল্পে আপনাকে মডিউলটি ব্যবহার করতে হবে কারণ এটি এখনও Nodeধারণ করে না Fetch API। এই সমস্যার সমাধানের জন্য কমান্ডের নীচে রান করুন:

npm install --save isomorphic-fetch es6-promise

আপনার প্রকল্পের কোড নীচে ইনস্টলেশন পরে:

import "isomorphic-fetch"

আশা করি এই উত্তরটি আপনাকে সহায়তা করবে।


6
সক্রিয়ভাবে রক্ষণাবেক্ষণ করা হয় না; সর্বশেষ স্বীকৃত জনসংযোগ থেকে বছর হয়ে গেছে। github.com/matthew-andrews/isomorphic-fetch/
راف

5

আনার জন্য সেরা একটি হ'ল অ্যাকজিওস লাইব্রেরি। npm i --save axiosইনস্টলংয়ের জন্য ব্যবহার করুন এবং এটি আনার মতো ব্যবহার করুন, আনার পরিবর্তে কেবল অক্ষ লিখুন এবং তারপরে () তে প্রতিক্রিয়া পান ।


4

নোড.জেএস আনার () পদ্ধতিটি কার্যকর করে নি তবে জাভাস্ক্রিপ্টের জন্য আপনি এই দুর্দান্ত প্রয়োগের পরিবেশের একটি বাহ্যিক মডিউল ব্যবহার করতে পারেন।

উপরের উত্তরের একটিতে "নোড-ফেচ" উদ্ধৃত করা হয়েছে এবং এটি একটি ভাল পছন্দ।

আপনার প্রকল্প ফোল্ডারে (ডিরেক্টরিতে আপনার .js স্ক্রিপ্ট রয়েছে) কমান্ডটি দিয়ে সেই মডিউলটি ইনস্টল করুন:

এনপিএম আমি নোড-ফেচ - সেভ

তারপরে নডি.জেএস দিয়ে আপনি যে স্ক্রিপ্টটি নির্বাহ করতে চান তাতে স্থির হিসাবে এটি ব্যবহার করুন:

কনস্ট ফেচ = প্রয়োজনীয় ("নোড-ফেচ");


1

এটি সম্পর্কিত গিথুব সমস্যাটি এই বাগটি ২.০.০ সংস্করণ সম্পর্কিত, আপনি কেবল এটি সংস্করণ ২.১.০ এ আপগ্রেড করে সমাধান করতে পারেন। আপনি চালাতে পারেন npm i graphql-request@2.1.0-next.1


0

নিম্নলিখিতটি আমার জন্য নোড.জেএস 12.x এ কাজ করে:

npm i node-fetch;

ড্রপবক্স উদাহরণটি শুরু করতে:

var Dropbox = require("dropbox").Dropbox;
var dbx = new Dropbox({
   accessToken: <your access token>,
   fetch: require("node-fetch")    
});

উদাহরণস্বরূপ কোনও সামগ্রী আপলোড করুন (এই ক্ষেত্রে ব্যবহৃত একটি অ্যাসিনক্রোনাস পদ্ধতি):

await dbx.filesUpload({
  contents: <your content>,
  path: <file path>
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.