"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मैंने dpdm का उपयोग करके Redux में एक सर्कुलर डिपेंडेंसी बग को कैसे ठीक किया

मैंने dpdm का उपयोग करके Redux में एक सर्कुलर डिपेंडेंसी बग को कैसे ठीक किया

2024-11-09 को प्रकाशित
ब्राउज़ करें:864

How I Fixed a Circular Dependency Bug in Redux Using dpdm

भ्रम के घेरे को तोड़ना: एक रिडक्स सर्कुलर डिपेंडेंसी जर्नी

हाल ही में, मुझे अपने Redux कोडबेस में एक बग का सामना करना पड़ा जिससे मुझे अपना सिर खुजलाना पड़ा। यदि आपने कभी भ्रम की उस अचानक लहर को महसूस किया है जब परीक्षण सूट एक ऐसी त्रुटि फेंकता है जिसका कोई मतलब नहीं है, तो आप उस भावना को जान लेंगे। यहां बताया गया है कि क्या हुआ और आख़िरकार मैंने समस्या का पता कैसे लगाया (और उसे ठीक किया)।

पृथ्वी पर सर्कुलर डिपेंडेंसी क्या है?

एक परिपत्र निर्भरता तब होती है जब दो या दो से अधिक मॉड्यूल एक-दूसरे पर निर्भर होते हैं - प्रत्यक्ष या अप्रत्यक्ष रूप से - निर्भरता श्रृंखला में एक अनंत लूप बनाते हैं। दूसरे शब्दों में, यह ऐसा है जैसे दो दोस्त कह रहे हों, "तुम पहले जाओ," लेकिन कोई भी कभी आगे नहीं बढ़ता। जावास्क्रिप्ट में, इसके परिणामस्वरूप अपरिभाषित मॉड्यूल या अपूर्ण डेटा हो सकता है, जिससे बग उत्पन्न होते हैं जिनका पता लगाना अविश्वसनीय रूप से कठिन हो सकता है।

अपराधी: एक उदाहरण

दो जावास्क्रिप्ट फ़ाइलों की कल्पना करें, मॉड्यूलए.जेएस और मॉड्यूलबी.जेएस:

// moduleA.js
import { functionB } from './moduleB.js';
export function functionA() {
  console.log('functionA called');
  functionB();
}

// moduleB.js
import { functionA } from './moduleA.js';
export function functionB() {
  console.log('functionB called');
  functionA();
}

यहाँ, दोनों मॉड्यूल एक दूसरे पर निर्भर हैं। जब जावास्क्रिप्ट उन्हें लोड करने का प्रयास करता है, तो यह भ्रमित हो जाता है क्योंकि पहले तैयार हुए बिना किसी को भी पूरी तरह से लोड नहीं किया जा सकता है। इससे अपरिभाषित फ़ंक्शंस या अपूर्ण मॉड्यूल जैसी समस्याएं उत्पन्न होती हैं - मूल रूप से, एक गड़बड़ी।

तो, मुझे अपनी सर्कुलर निर्भरता कैसे मिली?

आह, वह भयानक त्रुटि जिसने इस साहसिक कार्य को शुरू किया:

Error: `reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers.
 ❯ Module.configureStore node_modules/@reduxjs/toolkit/src/configureStore.ts:98:11

मेरी पहली प्रतिक्रिया? "रुको, क्या?!" - मेरा सबसे अच्छा पल नहीं। मुझे यकीन था कि मेरे रेड्यूसर अपनी जगह पर थे, इसलिए यह त्रुटि कहीं से भी नहीं आई। कुछ खोजबीन के बाद, मुझे एहसास हुआ कि यह एक लापता रिड्यूसर मुद्दा नहीं था, बल्कि मेरे Redux सेटअप में एक गोलाकार निर्भरता थी। बेशक, इसका पता लगाना आसान नहीं था!

असली हीरो: डी.पी.डी.एम

तभी मुझे अपना उद्धारकर्ता मिला: एनपीएम पैकेज डीपीडीएम। यह रत्न आपके निर्भरता वृक्ष का विश्लेषण करता है और आपको दिखाता है कि वे गुप्त गोलाकार निर्भरताएँ कहाँ रहती हैं। निम्नलिखित कमांड चलाने से मुझे एक स्पष्ट दृश्य मिला:

dpdm --no-warning --no-tree ./src/index.tsx

और वोइला! मेरे प्रोजेक्ट में इसे क्या मिला, इसका एक अंश यहां दिया गया है:

• Circular Dependencies
  01) src/stores/store.ts -> src/stores/rootReducer.ts -> src/stores/slice/authSlice.ts -> src/utilities/api.ts
  02) src/stores/rootReducer.ts -> src/stores/slice/bookingSlice.ts -> src/hooks/redux.tsx -> src/stores/types.ts -> src/stores/setUpStore.ts
  03) src/stores/types.ts -> src/stores/setUpStore.ts
  ...

समाधान: रिफैक्टरिंग का समय!

रिपोर्ट स्पष्ट थी: मेरी Redux फ़ाइलों में मुख्य रूप से store.ts, rootReducer.ts और कुछ स्लाइस में सर्कुलर निर्भरता का एक समूह था। कुछ तर्कों को विभाजित करने, अनावश्यक निर्भरताओं को तोड़ने और कोड को फिर से तैयार करने के बाद, मुझे अंततः चीजें वापस क्रम में मिल गईं।

सीख सीखी

  • सर्कुलर निर्भरताएं गुप्त हैं: वे अक्सर रनटाइम तक या यूनिट परीक्षणों के दौरान दिखाई नहीं देती हैं, जिससे उन्हें ट्रैक करना मुश्किल हो जाता है।
  • डीपीडीएम जैसे उपकरण जीवनरक्षक हैं: आयात के माध्यम से मैन्युअल रूप से खोज करने में समय बर्बाद न करें। उपकरणों को भारी सामान उठाने दें।
  • रिफैक्टरिंग आपका मित्र है: कभी-कभी सर्कुलर निर्भरताएं खराब वास्तुकला का संकेत होती हैं। एक अच्छा रिफैक्टर न केवल तत्काल समस्या को ठीक करता है बल्कि आपके कोडबेस को साफ-सुथरा और अधिक रखरखाव योग्य भी बनाता है।

तो, अगली बार जब आप इन खतरनाक कीड़ों में से किसी एक से टकराएं, तो कुछ कॉफी लें, हंसें और उस घेरे को तोड़ दें!

हैप्पी डिबगिंग! ?

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/akshaysrepo/how-i-fixed-a-circular-dependency-bug-in-redux-using-dpdm-13ap?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग से संपर्क करें @163.com हटाएं
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3