2015-09-06 10 views
5

में जनरेटर मैं नोड जे एस में एक webapp पर काम कर रहा हूँ, कोआ ढांचे का उपयोग कर के साथ जे एस डिबग करने के लिए।बेहतर तरीका इंटेलीजे या WebStorm

सभी प्रवाह नियंत्रण, जेनरेटर के साथ किया जाता कॉलबैक के बजाय। कोड क्रमिक दिखता है, हालांकि वास्तविक प्रवाह नहीं है। वैसे भी यह बहुत साफ साफ कॉलबैक नरक दिखता है।

function *findUserById(userId) 
{ 
    var user = yield getUserOrError404(userId); 
    yield loadAdditionalData(user); 
    yield data.users.save(user); 
    return user; 
} 

Howeve वहाँ एक कठिनाई है:: मेरे आईडीई में yield रों (IntelliJ विचार) के साथ कोड के माध्यम से कदम बहुत अच्छी तरह से काम नहीं करता है

यहाँ एक नियंत्रक समारोह koa के साथ लिखा का एक सरल उदाहरण है। एक बार निष्पादन yield कथन के साथ लाइन पर है, अगर मैं बस "ऊपर कदम" करता हूं, तो निष्पादन प्रवाह कोआ कोड को ढेर कर देता है (यह वास्तव में आईडीई की गलती नहीं है क्योंकि यह जेनरेटर के निष्पादन के वास्तविक प्रवाह का पालन करता है , उपज बयान और नोड घटना पाश)।

वर्तमान में मैं अगले स्टेटमेंट मैं रोकने के लिए डिबगर, अक्सर अगली पंक्ति चाहते करने के लिए एक ब्रेकपाइंट सेट है, और "फिर से शुरू कार्यक्रम" बटन पर क्लिक करना होगा।

काफी थका देने बन सकता है जब एक से अधिक 2-3 उपज बयान कर रहे हैं।

वहाँ एक बेहतर तरीका है (चाल, प्लगइन, ...) जनरेटर भारी जे एस कोड है कि जैसे कि यह एक "सामान्य" अनुक्रमिक बयान थे एक उपज बयान पर कदम करने की अनुमति से निकलने के लिए?

उत्तर

3

Run To Cursor कमांड के लिए नौकरी की तरह लगता है - यह आपके कर्सर वर्तमान में चलने वाली रेखा तक पहुंचने के बाद हटाए जाने वाले हल्के ब्रेकपॉइंट की तरह प्रभावी ढंग से चलता है।

उस बटन के स्क्रीनशॉट के लिए this gist देखें, जिसके लिए आप इसका उपयोग कर सकते हैं, और एक टेस्ट हार्नेस फ़ाइल जिसे मैं यह जांचने के लिए प्रयोग करता हूं कि यह काम करता है (यह करता है; कम से कम phpStorm में, इसलिए मैं वेबस्टॉर्म को समान कार्य करने की अपेक्षा करता हूं जहां तक ​​जेएस चिंतित है)।

संपादित करें: यह बहुत इंटेलीजे में पूरी तरह से अच्छी तरह से काम करता है। स्क्रीनशॉट में दिखाए गए बटन के अतिरिक्त, आप लाइन पर राइट-क्लिक करके इसे ट्रिगर भी कर सकते हैं और फिर प्रासंगिक मेनू में "कर्सर पर चलाएं" पर क्लिक कर सकते हैं। या [alt] + [F9] कीबोर्ड शॉर्टकट।

+0

ब्रेकपॉइंट्स विधि पर यह पहले से ही एक बड़ा सुधार है। धन्यवाद ! मेरी इच्छा है कि जेनरेटर कॉल पर पारदर्शी रूप से कदम उठाने के लिए एक और अधिक उन्नत "अनुकरण" विधि थी। मैं थोड़ी देर इंतजार करूंगा, शायद कोई ऐसे जादू के साथ आ सकता है ... अन्यथा मैं यह जवाब स्वीकार करूंगा। –

+0

ओह, और नियमित डीबगिंग सत्रों के लिए भी उपयोगी;) –

+0

मैं आपके उत्तर को स्वीकार करूंगा, उम्मीद है कि, कुछ दिन, इंटेलिजे जैसे टूल में "जनरेटर जागरूक" डिबगिंग मोड होता है जो उपज विवरणों पर पारदर्शी रूप से कदम उठाने की अनुमति देता है। –

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