तो यह एक अजीब तरह की त्रुटि है। मैं अपने Next.js ऐप में क्या करने की कोशिश कर रहा हूं, यह देखने के लिए कि मुझे क्या मिलता है, एपीआई कॉल की लॉग सामग्री को कंसोल करना है। यह एपीआई फ़ंक्शन सिर्फ यह जांचता है कि कोई उपयोगकर्ता लॉग इन है या नहीं और यदि ऐसा है तो मैं कोड का एक निश्चित खंड प्रस्तुत करूंगा। मेरी auth.js क्रिया फ़ाइल से जो एक कुकी प्राप्त करती है जिसमें स्थानीय संग्रहण से साइन इन किए गए उपयोगकर्ता की उपयोगकर्ता जानकारी होती है:

export const isAuth = () => {
if (process.browser) {
    const cookieChecked = getCookie('token');
    if (cookieChecked) {
        if (localStorage.getItem('user')) {
            return JSON.parse(localStorage.getItem('user'));
        } else {
            return false;
        }
    }
}

};

मेरे पेज फोल्डर में मेरे पास एक फ़ाइल [username].js है, जहां अभी मैं उपयोगकर्ता के बारे में जानकारी के एक निश्चित भाग को लॉग करने का प्रयास कर रहा हूं, इस उदाहरण में उपयोगकर्ता नाम:

{ isAuth().username ? console.log(isAuth().username)  : "" }

मैं यह सुनिश्चित करने के लिए भी जांच कर रहा हूं कि यह सेट है, फिर भी मुझे एक TypeError: Cannot read property 'username' of undefined मिलता है

हालांकि अगर मैं सिर्फ संपूर्ण उपयोगकर्ता ऑब्जेक्ट { isAuth() ? console.log(isAuth()) : "" } लॉग करता हूं तो कंसोल लॉग ठीक है। यहाँ क्या लौटाया गया है:

{
"_id": "5f7a39ab7acc30a29c5280df",
"username": "dylancougar",
"name": "Dylan Cougar",
"role": 2}

तो सभी जानकारी वहाँ है, हालांकि जब मैं ऑब्जेक्ट में किसी भी जानकारी को अलग करने का प्रयास करता हूं तो मुझे त्रुटि मिलती है। इससे भी अधिक अजीब बात यह है कि अगर आपत्तिजनक बिट कोड पर टिप्पणी की जाती है, और मैं इसे असम्बद्ध करता हूं और इसे सहेजता हूं तो यह वास्तव में कभी-कभी काम करेगा, हालांकि, अगर मैं पृष्ठ त्रुटि रिटर्न को पुनः लोड करता हूं। मैं Next.js का विशेषज्ञ नहीं हूं, इसलिए शायद कुछ स्पष्ट है जिसे मैं देख रहा हूं।

0
Jinjoe 27 नवम्बर 2021, 06:11
एक बिंदु हो सकता है जब आपका पृष्ठ शुरू में लोड होता है जहां isAuth() अपरिभाषित लौट रहा है क्योंकि process.browser का मूल्यांकन असत्य है। जब ऐसा होता है तो आपको अपनी त्रुटि मिल जाएगी। यह सुनिश्चित करने के लिए कि संपत्ति तक पहुँचने से पहले यह अपरिभाषित नहीं है, { isAuth() && isAuth().username ? console.log(isAuth().username) : "" } जैसा कुछ करने का प्रयास करें।
 – 
deafening_roar
27 नवम्बर 2021, 06:17

1 उत्तर

सबसे बढ़िया उत्तर

यहाँ समस्या यह है कि next.js आपके डेटा को पहले सर्वर में प्रस्तुत करता है और process.browser सर्वर में अपरिभाषित है। तो निम्न कार्य करें:

  export const isAuth = () => {
  let user = false
  if (process.browser) {
    const cookieChecked = getCookie('token');
    if (cookieChecked) {
      if (localStorage.getItem('user')) {
        user = JSON.parse(localStorage.getItem('user'));
        return user;
      } 
    } 
  }
  return user;

यह काम करना चाहिए।

1
Pranta 27 नवम्बर 2021, 06:21