2016-04-23 4 views
14
import { 
    foobar1, 
    foobar2, 
    foobor3, //typo! this key doesn't exist in the module. 

} from './module_file.js' 


console.log(foobar1, foobar2, foobar3) //EXPLODES 

नई ES6 शैली आयात कथन का उपयोग करते समय मैं सबसे अधिक मूर्खतापूर्ण गलतियों में से एक यह है कि मेरे पास वस्तु विनाशकारी में से एक में एक टाइपो होगा। मैं एक उदाहरण के बारे में नहीं सोच सकता जहां मैं कभी भी विनाशकारी असाइनमेंट में undefined होने का मूल्य चाहता हूं। क्या आयात विवरण को असफल होने के लिए मजबूर करने का कोई तरीका है यदि मैं आयात करने की कोशिश कर रहा हूं तो एक आइटम अनिर्धारित है?ईएस 6 आयात कथन का उपयोग करते समय, क्या अपरिभाषित वस्तुओं के खिलाफ सुरक्षा करने का कोई तरीका है?

अर्थात्:

import { 
    doesntExistInModule //EXPLODE NOW! 
} from './module_file.js' 
+0

मुझे लगता है कि ऐसा करने के लिए एक ही रास्ता यह एक जटिल लिटर होगा। इस तरह कुछ के लिए ESlint प्लगइन्स की जांच करें। – PitaJ

+1

या अपना खुद का बेबेल प्लगइन लिखें जो एक अतिरिक्त चेक में आयात को लपेटता है और अगर वे अपरिभाषित हैं तो एक त्रुटि फेंकता है। –

उत्तर

2

कल्पना में मॉड्यूल सामान सुंदर ऐंठा हुआ है, लेकिन मेरा मानना ​​है कि कोई वास्तविक कार्यान्वयन उस मामले में 15.2.1.16.4 ModuleDeclarationInstantiation() Concrete Method step 12.d.iii पर एक SyntaxError फेंक देते हैं। चूंकि कोई कानूनी कार्यान्वयन नहीं है, इसलिए मुझे नहीं पता कि क्या आप इस दौरान पारदर्शी कोड में ऐसा करने के तरीके के बारे में बात कर रहे हैं, या यदि आपको यह नहीं पता कि यह मामला है और यह जानकर संतुष्ट होगा कि यह काम करेगा अंततः रास्ता। बेबेल में उस तरह की जांच को लागू करने की कोशिश करने से पहले बात की गई है, लेकिन जहां तक ​​मुझे पता है कि वास्तव में उस प्रभाव के लिए कुछ भी नहीं किया गया है। बेबेल अलगाव में प्रत्येक मॉड्यूल संकलित करता है।

इसके अलावा, यह ऑब्जेक्ट विनाशकारी नहीं है, यह सिर्फ समान वाक्यविन्यास है।

1
  • कोई एक मॉड्यूल अपनी निर्भरता लोड करने से पहले कुछ कोड चलाने की अनुमति हुक नहीं है। इसका मतलब है कि मॉड्यूल पर
    पर निर्भरता नहीं है कि उनकी निर्भरताएं लोड की गई हैं।
  • आयात त्रुटियों के लिए कोई त्रुटि पुनर्प्राप्ति नहीं है। एक ऐप में सैकड़ों मॉड्यूल हो सकते हैं, और यदि कुछ लोड या लिंक करने में विफल रहता है, तो कुछ भी नहीं चलता है। आप कोशिश/पकड़ ब्लॉक में आयात नहीं कर सकते हैं। , (यहां उल्टा कि क्योंकि प्रणाली इतनी स्थिर है, webpack उन त्रुटियों आप के लिए संकलन समय पर पता लगाने कर सकते हैं।)

अधिक जानकारी के लिए read it out

संबंधित मुद्दे

 संबंधित मुद्दे