আমি কীভাবে প্রতিক্রিয়া নেটিভে নেটওয়ার্ক অনুরোধগুলি (ডিবাগিংয়ের জন্য) দেখতে পারি?


111

আমাকে ডিবাগ করতে সহায়তা করতে আমি আমার নেটওয়ার্ক অনুরোধগুলি দেখতে চাই - আদর্শভাবে ক্রোমের দেবতুলগুলির 'নেটওয়ার্ক' ট্যাবে।

গিটিহাব ( https://github.com/facebook/react-native/issues/4122 এবং https://github.com/facebook/react-native/issues/934 ) এ সম্পর্কে কিছু বন্ধ সমস্যা আছে তবে আমি ' পুরোপুরি এগুলি বুঝতে পারবেন না। দেখে মনে হচ্ছে যে আমাকে নেটিভের নেটিভের কিছু পলিফিলগুলি পূর্বাবস্থায় ফিরিয়ে আনতে হবে এবং তারপরে অতিরিক্ত ডিবাগিং পতাকাগুলি সহ কয়েকটি কমান্ড চালানো উচিত এবং সম্ভবত কিছু ক্রোম সুরক্ষা সেটিংস সংশোধন করতে হবে? এবং স্পষ্টতই এটি করার সাথে সাথে কিছু সুরক্ষিত সমস্যা জড়িত রয়েছে যা এটি একটি ভয়াবহ ধারণা তৈরি করতে পারে তবে থ্রেডের সাথে জড়িত কেউই সেগুলি কী তা স্পষ্ট করে বলেননি।

নেটওয়ার্ক ট্যাবটি রিয়েক্ট নেটিভের সাথে কাজ করার জন্য, পাশাপাশি এটির সাথে জড়িত সুরক্ষা সম্পর্কিত সমস্যার ব্যাখ্যা দেওয়ার জন্য কি কেউ ধাপে ধাপে গাইড সরবরাহ করতে পারে?

উত্তর:


110

আমি এখনও নিশ্চিত নই যে কেন এখনও পর্যন্ত কেউ এই সমাধানটি দেখায়নি। নেটিভ ডিবাগারটি প্রতিক্রিয়া ব্যবহার করুন - https://github.com/jhen0409/react-native-debugger ! এটি আমার মতে প্রতিক্রিয়া নেটিভের জন্য সেরা ডিবাগিং সরঞ্জাম এবং এটি নেটওয়ার্ক পরিদর্শনটিকে বাক্সের বাইরে দেয়।

এই স্ক্রিনশটগুলি একবার দেখুন।

ডান ক্লিক করুন এবং 'নেটওয়ার্ক পরিদর্শন সক্ষম করুন' নির্বাচন করুন নেটওয়ার্ক পরিদর্শন সক্ষম করা

ডান ক্লিক করুন এবং 'নেটওয়ার্ক পরিদর্শন সক্ষম করুন' নির্বাচন করুন নেটওয়ার্ক পরিদর্শন সক্ষম করা

ডিবাগ দূরে! নেটওয়ার্ক পরিদর্শন করে


11
আপনি যদি স্কিমিং করেন এবং এই উত্তরটি দেখতে পান তবে মনে রাখবেন যে আপনাকে ডান ক্লিক করতে হবে এবং Enable Network Inspectএটি কাজ করার জন্য। ডিফল্ট হিসাবে, এটি না।
স্টিফেন Sauceer

4
এটি দুর্দান্ত কাজ করে! আমার জীবনকে এত সহজ করে দেবে।
অগস্টো সামামা ব্যারিয়েন্টস

4
বাহ, কেন এই বৈশিষ্ট্যটি মূল প্যানেলে রাইট ক্লিক করে লুকানো আছে। কখনই জানত না যে এর অস্তিত্ব আছে। খেলা পরিবর্তনকারী. জসন প্রতিক্রিয়াগুলি দেখাচ্ছিল না ... টগল করার সাথে সাথে সরাসরি প্রদর্শিত হবে। ধন্যবাদ!
ম্যাট

4
কেন এটি আরও ব্যাপকভাবে জানা যায় না? ♂️‍♂️
টম মুলকিনস

4
এর চেয়ে বেশি কারণ আমরা যখনই নেটওয়ার্ক ট্যাবটি দেখি বা সেই ট্যাবের অভ্যন্তরে একটি সেটিংস (চেকবক্স বা কিছু প্রকারের) হিসাবে চিহ্নিত করি তখন কেন এটি ডিফল্ট আচরণ নয়!
সাইবারমিউ

94

এটি আমার অ্যাপের এন্ট্রি পয়েন্টে ব্যবহার করছি

const _XHR = GLOBAL.originalXMLHttpRequest ?  
    GLOBAL.originalXMLHttpRequest :           
    GLOBAL.XMLHttpRequest                     

XMLHttpRequest = _XHR

সম্পাদনা: ফ্রেভিব নীচে আরও সংক্ষিপ্ত সিনট্যাক্সের সাথে যুক্ত। ধন্যবাদ ফ্রভিব!

GLOBAL.XMLHttpRequest = GLOBAL.originalXMLHttpRequest || GLOBAL.XMLHttpRequest;

ব্যাখ্যা:

GLOBAL.originalXMLHttpRequestএক্সএইচআর এর ক্রোম দেব সরঞ্জাম অনুলিপি উল্লেখ করে। এটি একটি পালানোর হ্যাচ হিসাবে আরএন সরবরাহ করেছে। শ্বেতুস্যা এর সমাধান কেবল তখনই কাজ করবে যদি ডেভ সরঞ্জামগুলি খোলা থাকে এবং এইভাবে সরবরাহ করা হয় XMLHttpRequest

সম্পাদনা: ডিবাগার মোডে থাকা অবস্থায় আপনাকে ক্রস অরিজিন অনুরোধগুলি মঞ্জুরি করতে হবে। ক্রোমের সাহায্যে আপনি এই হ্যান্ডি প্লাগইনটি ব্যবহার করতে পারেন ।

সম্পাদনা: আরএন গিতুব ইস্যু সম্পর্কে পড়ুন যা আমাকে এই সমাধানে নিয়ে যায়


4
কোডটির এই অংশটি রাখার পরে আমি বিকাশকারী কনসোলে অনুরোধটি দেখতে সক্ষম হলাম তবে আমার সমস্ত অনুরোধ 404 টি স্থিতিতে ব্যর্থ হয়। কারও ধারণা আছে কেন এমনটা হতে পারে?
পিটার_ফ্রেটার

4
এইটা কাজ করে. থেকে এই টুক গিটহাব
frevib

4
এটি আমার পক্ষে কাজ করে না। আমি অ্যান্ড্রয়েড এমুলেটর ব্যবহার করি এবং নেটওয়ার্ক ট্যাবটি দেখায় খালি এমনকি অনুরোধগুলি প্রেরণ করা হচ্ছে
Ville Miekk-oja

19
এটি আর কাজ করে না, কনসোলে নিম্নলিখিত ত্রুটিটি উপস্থিত হয় (নিশ্চিত কী পরিবর্তন কী কারণে এটি ঘটেছে):Uncaught Error: unsupported BodyInit type at Response.Body._initBody (fetch.js:231) at new Response (fetch.js:390) at XMLHttpRequest.xhr.onload (fetch.js:437)
ম্যাক্সিম জুবরেভ

4
এই ওয়ান-লাইনার সেট-আপ সহ নেটিভ ডিবাগার রিএ্যাক্টে আমার পক্ষে কাজ করে । ধন্যবাদ লক্ষ গুণ, @tryangul
Kaloyan Kosev

46

আমি আমার অ্যাপে নিম্নলিখিতটি ব্যবহার করি (এটি আপনার মূল অ্যাপ্লিকেশন.জেএস এন্ট্রি পয়েন্ট ফাইলটিতে যুক্ত করুন):

// To see all the requests in the chrome Dev tools in the network tab.
XMLHttpRequest = GLOBAL.originalXMLHttpRequest ?
    GLOBAL.originalXMLHttpRequest :
    GLOBAL.XMLHttpRequest;

  // fetch logger
global._fetch = fetch;
global.fetch = function (uri, options, ...args) {
  return global._fetch(uri, options, ...args).then((response) => {
    console.log('Fetch', { request: { uri, options, ...args }, response });
    return response;
  });
};

সর্বোত্তম বিষয়টি এটি কনসোলে আনার লগগুলিও ভাল ফর্ম্যাট করে shows

স্ক্রিনশট:

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

নেটওয়ার্ক ট্যাবে:

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


সেটা খুবই ভালো! আপনাকে ধন্যবাদ
ডিজে ফরথ

মূল অনুরোধের কোন পর্যায়ে এটি চালিত হয়? আমি আসলে এটিকে রিফ্রেশ টোকেনগুলিকে ফায়ার করার প্রক্রিয়া হিসাবে ব্যবহার করার কথা ভাবছি যদি কোনও প্রতিক্রিয়াতে 401 থাকে। তাতে কি সমস্যা আছে?
tushar747

অবাস্তব সঙ্কল্প! আমার মেট্রো নির্মাতাকে বিধ্বস্ত না করে রেইকোট্রনকে কাজ করতে আমার সমস্যা হয়েছে। আপনার সমাধান দুর্দান্ত কাজ করে। এমনকি রিয়েট নেটিভ ডিবাগারে কাজ করে।
মিডিয়াগুরু

প্রতিক্রিয়াতে 'অ্যাক্সেস-কন্ট্রোল-অলজন-অরিজিন' শিরোনামের মান অবশ্যই ওয়াইল্ডকার্ড '*' হওয়া উচিত নয় যখন অনুরোধের শংসাপত্র মোডটি 'অন্তর্ভুক্ত' থাকে। মূল ' লোকালহোস্ট: 8081 ' এ অ্যাক্সেসের অনুমতি নেই। XMLHttpRequest দ্বারা শুরু করা অনুরোধগুলির শংসাপত্রের মোডটি শংসাপত্রের বৈশিষ্ট্য সহ নিয়ন্ত্রণ করা হয়।
নিখিল মাহিরराव

অসাধারণ. আপনাকে অনেক ধন্যবাদ
মার্ক করুন Mark

28

ট্র্যাকিং নেটওয়ার্কের অনুরোধের জন্য আমি রিঅ্যাক্ট্রন ব্যবহার করি

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


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

আপনি চিন্তিত ক্রোম ব্যবহারের পার্শ্ব প্রতিক্রিয়াগুলি কী কী? রিঅ্যাক্ট্রন ক্রোমিয়াম এম্বেড ফ্রেমওয়ার্ক ব্যবহার করে।
পিটার ইভান ডিল

অসাধারণ !! ধন্যবাদ আপনি নেট এ অনুসন্ধানের দিনগুলি রক্ষা করেছেন
আলেন

খনি ডিভাইসের সাথে সংযুক্ত তবে প্রতিটি অনুরোধটি ধরা পড়ছে না, কেবল প্রথম লোডে। তা কেন?
জিফ গিলবার্ট

12

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে এখনই এটি করার আরও অনেক নিরাপদ উপায় রয়েছে যার জন্য সিওআরএস অক্ষম করা বা প্রতিক্রিয়াগত নেটিভ সোর্স কোড পরিবর্তন করতে হবে না। আপনি রিয়্যাকট্রন নামে একটি তৃতীয় পক্ষের লাইব্রেরি ব্যবহার করতে পারেন যা কেবলমাত্র API কলগুলি (নেটওয়ার্ক প্লাগইন ব্যবহার করে) ট্র্যাক করে না, পাশাপাশি আপনার রেডাক্স স্টোর এবং সাগাসকে অতিরিক্ত সেটআপ সহ ট্র্যাক করতে পারে:

https://github.com/infinitered/reactotron https://github.com/infinitered/reactotron/blob/master/docs/plugin-networking.md


রিঅ্যাকট্রন কেবল তখনই কাজ করবে বলে মনে হয় যদি আপনি এপিএসস নামে পরিচিত বাহ্যিক গ্রন্থাগার ব্যবহার করেন। এটি সাধারণ আনার জন্য কাজ করে না। সুতরাং আপনি যদি আপনার অ্যাপ্লিকেশনটিতে বাহ্যিক লাইব্রেরি দ্বারা প্রেরিত অনুরোধগুলি পর্যবেক্ষণ করতে চান, তবে চুল্লি ভাল নয়।
ভিল মিক্ক-ওজা

4
@ ভিলিমিক্ক-ওজা আসলে রিচোট্রন মার্চ থেকে ফ্যাচের সাথে নেটওয়ার্কিং সমর্থন করে, এটি কেবলমাত্র ডকুমেন্টেশনটি পুরানো ছিল। আমি নিজে চেষ্টা করেছিলাম, এবং এটি
রিডমে

এটি দুর্দান্ত কাজ করে; আমি এর সাথে অনেকগুলি সমস্যা দেখেছি: GLOBAL.XMLHttpRequest = GLOBAL.originalXMLHttpRequest || GLOBAL.XMLHttpRequest;
পেট্রোগড

4
রিঅ্যাক্ট্রনটি কনফিগার করা সত্যিই সহজ এবং রিএ্যাক্ট-নেটিভ অ্যাপ্লিকেশনগুলির নেটওয়ার্ক কলগুলি ট্র্যাক করতে দরকারী
রাম

9

রিএ্যাক্ট নেটিভ আমদানির পরে রিয়েল রিটিভ নেটিভ সরবরাহ করে এমন পলিফিল মুছে ফেলে আমি ক্রোমে আমার অনুরোধগুলি ডিবাগ করতে সক্ষম হয়েছি।

var React = require('react-native');
delete GLOBAL.XMLHttpRequest;

এটি একই উত্স অনুরোধের জন্য আমার জন্য কাজ করেছে। ক্রস অরিজিনের জন্য কাজ করার জন্য আপনাকে ক্রোমে সিওআরএস অক্ষম করতে হবে কিনা তা নিশ্চিত নয়।


একটি প্রতিক্রিয়া নেটিভ অ্যাপ্লিকেশন থেকে করা অনুরোধ প্রসঙ্গে একটি "একই উত্স" অনুরোধ কী? ডিবাগার (যেমন সম্ভবত লোকালহোস্ট) হিসাবে একই ডোমেনে থাকা একটি?
মার্ক আমেরিকা

আমার ক্ষেত্রে ক্রোস উত্স হিসাবে কাজ করতে আপনাকে Chrome এ CORS অক্ষম করতে হবে। এই ক্রোম প্লাগইনটি দেখুন: chrome.google.com/webstore/detail/allow-control-allow-origi/…
মোহাম্মদ হলিউল

@ মোহাম্মদহাল্লাল আপনি কীভাবে এই প্লাগইনটি ব্যবহার করেছেন তা ব্যাখ্যা করতে পারবেন?
অলেক্সমনগ

@ আলেক্সমনগেন ওহে, প্লাগইনটি ইনস্টল করুন এবং বু স্লাইডিং বোতামটি চালু করুন, আইকনটি চালু থাকা অবস্থায় সবুজ হওয়া উচিত এবং এটি বন্ধ হয়ে গেলে লাল হতে হবে। dropbox.com/s/242fflwgcew6m50/...
Mouhamed Halloul

6

এই কোডটি সম্পর্কে সতর্কতা অবলম্বন করুন।

XMLHttpRequest = GLOBAL.originalXMLHttpRequest ?
   GLOBAL.originalXMLHttpRequest : GLOBAL.XMLHttpRequest;

এটি সহায়তা করে এবং এটি দুর্দান্ত তবে এটি আপলোডকে ধ্বংস করে। আসল ফাইলের পরিবর্তে আপলোড করা ফাইলগুলি কেন [অবজেক্ট অবজেক্ট] প্রেরণ করা হচ্ছে তা জানার চেষ্টা করে আমি 2 দিন ব্যয় করি। কারণটি উপরে একটি কোড।

এটি নিয়মিত কলগুলির জন্য নয়, মাল্টিপার্ট / ফর্ম-ডেটা কলগুলির জন্য ব্যবহার করুন


5

অতীতে আমি GLOBAL.XMLHttpRequestআমার এপিআই অনুরোধগুলি ট্র্যাক করতে হ্যাক ব্যবহার করতাম তবে কখনও কখনও এটি খুব ধীর হয় এবং সম্পদের অনুরোধগুলির জন্য কাজ করে না। Postman’s proxyফোন থেকে বেরিয়ে আসা এইচটিটিপি যোগাযোগের বিষয়টি পরীক্ষা করার জন্য আমি বৈশিষ্ট্যটি ব্যবহার করার সিদ্ধান্ত নিয়েছি । বিশদের জন্য অফিসিয়াল ডকুমেন্টেশনটি দেখুন তবে মূলত তিনটি সহজ পদক্ষেপ রয়েছে:

  • পোস্টম্যানে প্রক্সি সেট আপ করুন
  • আপনার কম্পিউটারের আইপি ঠিকানাটি পরীক্ষা করুন ( $ ifconfig)
  • আপনার মোবাইল ডিভাইসে ওয়াইফাই সেটিংসে HTTP প্রক্সি কনফিগার করুন

3

আপনি যদি আপনার অ্যাপ্লিকেশনটির একটি প্রকাশ সংস্করণে নেটওয়ার্কের অনুরোধগুলি ডিবাগ করতে চান তবে আপনি লাইব্রেরিটি স্থানীয়-নেটওয়ার্ক-লগার প্রতিক্রিয়া ব্যবহার করতে পারেন । এটি আপনাকে কাস্টম ডিবাগ স্ক্রিন থেকে অ্যাপের মধ্যে নেটওয়ার্ক অনুরোধগুলি নিরীক্ষণ এবং দেখতে দেয়।

স্থানীয়-নেটওয়ার্ক-লগার তালিকাকে প্রতিক্রিয়া জানায়

স্থানীয়-নেটওয়ার্ক-লগারের বিশদটি প্রতিক্রিয়া জানায়

তারপরে আপনি এটিকে একটি বিল্ড ফ্ল্যাগ বা একটি জাতীয় পতাকার পিছনে উত্পাদন অ্যাপ্লিকেশনটির ব্যবহারকারীদের জন্য এটি অক্ষম রাখতে পারেন।

কেবল এটির সাথে ইনস্টল yarn add react-native-network-loggerকরুন তারপরে এটি আপনার অ্যাপের এন্ট্রি পয়েন্টে যুক্ত করুন:

import { startNetworkLogging } from 'react-native-network-logger';

startNetworkLogging();
AppRegistry.registerComponent('App', () => App);

এবং এটি একটি ডিবাগ স্ক্রিনে:

import NetworkLogger from 'react-native-network-logger';

const MyScreen = () => <NetworkLogger />;

দাবি অস্বীকার: আমি প্যাকেজ লেখক।


4
বাবু এই লিব অসাধারণ! আপনাকে ধন্যবাদ
Emidomenge

2

আমি আপনার নেটওয়ার্ক অনুরোধগুলি পরিদর্শন করতে চার্লস ব্যবহার করার পরামর্শ দিচ্ছি। এটি সত্যই ভাল এবং আরও দৃশ্যমানতা সরবরাহ করে এবং আপনাকে উন্নত জিনিসগুলি করার অনুমতি দেয়।

http://charlesproxy.com


4
কেবল চার্লস চেষ্টা করে দেখে মনে হচ্ছে কেবল ক্যাপচার করা হচ্ছে http://localhost:8081/index.android.bundle?platform=android&dev=true.. কীভাবে এটি সমস্ত অনুরোধগুলি ক্যাপচার করবে? (আমি একটি বাহ্যিক এপিআই হিট করছি)
জেকফোরেকার

আপনার বাহ্যিক এপিআই কি এইচটিটিপিএস ব্যবহার করে? যদি তা হয় তবে এগুলি ধরার জন্য আপনার চার্লসকে কিছুটা কনফিগার করতে হবে।
ইয়েফেট

অ্যান্ড্রয়েড ব্যবহার করার সময়, চার্জগুলি বহির্গামী অনুরোধগুলি ক্যাপচার করতে কিছুটা সমস্যাযুক্ত হতে পারে। চার্লস অ্যাক্সেস করার জন্য আপনাকে 'ম্যানুয়ালি' আপনার সিমুলেটরটি কনফিগার করতে হবে (এবং শেষ বার চেষ্টা করার পরে, কনফিগার প্যানেলে গিয়ে কাজটি করতে হবে না - কমান্ড লাইন ইনস্ট্যান্টেশন থেকে প্রক্সি আইপি পাস করার প্রয়োজন ছিল)।
জো

0

আপনার যদি অ্যান্ড্রয়েড ফোন বা এমুলেটর থাকে,

  • npx react-native start

তারপরে অ্যান্ড্রয়েড স্টুডিও খুলুন ।

androidঅ্যান্ড্রয়েড স্টুডিও প্রকল্প হিসাবে আপনার প্রকল্পের ফোল্ডারটি খুলুন ।

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

এটি নীল আইকনটি ক্লিক করুন যা এটি অ্যান্ড্রয়েড প্রোফাইলার

অ্যান্ড্রয়েড প্রোফাইলার শুরু হওয়ার পরে, আপনি SESSIONSলেবেলের নিকটে ধূসর প্লাস আইকনটির মাধ্যমে আপনার অ্যাপ্লিকেশনটি যুক্ত করতে পারেনএখানে চিত্র বর্ণনা লিখুন

এখন আপনি এই সরঞ্জামের মাধ্যমে নেটওয়ার্কিং পরিদর্শন করতে পারেন। আপনি ত্রিভুজ দেখতে পাচ্ছেন যা আপনার নেটওয়ার্ক ক্রিয়াকলাপটি দেখায়।

নেটওয়ার্ক ট্র্যাফিক পরিদর্শন সম্পর্কে আরও তথ্যের জন্য দয়া করে এটি পরীক্ষা করুন ।


-26

যেখানে আপনি উত্তর বা প্রতিক্রিয়া দেখতে পাবেন সেই জেএসে ডিবাগার যুক্ত করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.