2015-11-19 11 views
5

क्या स्विच केस उदाहरण विवरण में टाइपो को पकड़ना संभव है?जावास्क्रिप्ट आयात संभाल अपरिभाषित

पसंदीदा तरीका यह होगा कि एस्लिनटर एक चेतावनी/त्रुटि की रिपोर्ट करेगा। वर्तमान में toString()const जोड़कर TypeError को रनटाइम में अपरिभाषित करने के लिए उपयोग किया जा सकता है।

actionTypes.js

export const UPDATE_REQUEST = 'UPDATE_REQUEST'; 

reducer.js

import * as types from '../constants/actionTypes'; 

export default function pouchdbReducer(state = {}, action) { 
    switch (action.type) { 
    case types.UPDDATE_REQUEST: 
     // there is a typo above and it evaluates to `undefined` 
     // this code would never be reached - how to make it an error 
     return Object.assign({}, state, {updated: true}); 
    default: 
     return state; 
    } 
} 

अद्यतन:

के रूप में @ nikc.org जवाब eslint-plugin-importnamespace विकल्प के साथ इस तरह के कीड़े linting के लिए इस्तेमाल किया जा सकता है।

https://github.com/bmihelac/test-js-import-undefined/tree/eslint-plugin-import

eslint config के प्रासंगिक हिस्सा है::

यहाँ विन्यास और डेमो के साथ छोटे भंडार है

"plugins": ["import"], 
"rules": { 
    "import/namespace": [2], 
+4

ठीक है, इस तरह की त्रुटियों को पकड़ने की कोशिश करने में समस्या यह है कि वे आवश्यक त्रुटियां नहीं हैं। कोड के बारे में कुछ भी गलत नहीं है, दूसरे शब्दों में, जावास्क्रिप्ट के नियम दिए गए हैं। – Pointy

+0

@ es6 मॉड्यूल के रूप में पॉइंटी स्थिर हैं मैं उम्मीद कर रहा हूं कि कुछ सांख्यिकीय विश्लेषक इस तरह के टाइपो ढूंढ सकते हैं। – bmihelac

+0

ठीक है, शायद यह मामला है कि चतुर स्थैतिक विश्लेषण कम से कम गलत वर्तनी स्थिरता की अनुपस्थिति को नोटिस करेगा। – Pointy

उत्तर

0

ESLint के लिए eslint-plugin-import प्लगइन import और export रों पर स्थिर विश्लेषण करता है और विभिन्न मानदंडों पर त्रुटियों या चेतावनियों को बढ़ाने के लिए कॉन्फ़िगर किया जा सकता है, जिसमें आपके प्रश्न के मामले में जहां आपने रेफर को गलत वर्तनी दी थी एक आयातित प्रतीक के लिए एनसीई।

पूरी तरह से समस्या को खत्म करने के लिए, आप Tern पर एक नज़र डाल सकते हैं जो आपको कई संपादकों में कोड अंतर्दृष्टि और कोड पूर्णता देता है जो पूरी तरह से गलत वर्तनी से परहेज करता है।

+1

@aschipfl यह उत्तर कैसे प्रदान नहीं करता है? अगर आप इसे बहुत कम पाते हैं, तो मैं इसे कम करने के लिए प्रोसाइक फ्लफ के साथ जवाब पैड कर सकता हूं, लेकिन इसमें कोई मूल्य नहीं होगा। सवाल यह था कि "क्या आप आयातित प्रतीकों के अमान्य संदर्भ खोजने के लिए स्थिर विश्लेषण का उपयोग कर सकते हैं?"। मेरा जवाब है: "हाँ आप कर सकते हैं, यहां एक उपकरण है जो बस यही करता है।" यह जवाब कैसे नहीं है? –

+0

@ nikc.org - "नेमस्पेस" एस्लिंट-प्लगइन-आयात का विकल्प है जिसे मैं ढूंढ रहा था। – bmihelac

1

अस्वीकरण, मैं tern-lint का ऑटोर हूं।

मैं आपको सुझाव देता हूं कि आप tern-lint का उपयोग करें जो "अज्ञात संपत्ति" जैसी त्रुटियों की रिपोर्ट करने में सक्षम है।

आप इस लिटर का उपयोग आदेश के साथ या एक संपादक के साथ कर सकते हैं जो इसका समर्थन करता है (Emacs, Atom, CodeMirror या ग्रहण)। यहाँ ग्रहण tern.java साथ

enter image description here

+0

टर्न-लिंट आशाजनक दिखता है, लेकिन एस्लिंट-प्लगइन-आयात – bmihelac

+0

@bmihelac का उपयोग करने के लिए आसान लगता है, क्या आप मुझे बता सकते हैं कि टर्न-लिंट के साथ क्या मुश्किल है। कमांड के साथ टर्न-लिंट का उपयोग कॉमन्स नहीं है, इसलिए कृपया इसे सुधारने के लिए मुझे सुझाव दें, धन्यवाद! – Angelo

+0

ठीक है क्योंकि मैं पहले से ही एस्लिंट का उपयोग करता हूं, एस्लिंट-प्लगइन-आयात स्थापित करना बहुत आसान था। मैं टर्न का भी उपयोग करता हूं लेकिन दुर्भाग्यवश टर्न-लिंट के लिए विम संपादक के लिए आउट ऑफ़ बॉक्स समर्थन नहीं है (यही कारण है कि मैंने कहा कि एस्लिंट-प्लगइन-आयात सेटअप करना आसान था)। इसके अलावा मैंने पाया कि टर्न में बड़ी परियोजनाओं के लिए धीमी प्रतिक्रिया और टाइमआउट हो सकते हैं जो निश्चित रूप से समय के साथ सुधारने के लिए सुनिश्चित करेंगे (अनुमान लगाया जा सकता है कि टर्न-लिंट से भी उम्मीद की जा सकती है)। – bmihelac

0

मैं कार्रवाई प्रकार की संख्या के आधार मान लें कि एक स्क्रीनशॉट (और यदि आप उन्हें तोड़ने के लिए तैयार हैं) आप थोड़ा बदल सकता है आप उन्हें कैसे आयात करते हैं।

हो सकता है कि कुछ इस तरह:

import {TYPE_ONE, TYPE_TWO} from '../constants/firstActionTypes'; 
import {TYPE_THREE} from '../constants/secondActionTypes'; 

export default function pouchdbReducer(state = {}, action) { 
    switch (action.type) { 
    case TTYPE_ONE: 
     // Linting should identify this easily now 
     return Object.assign({}, state, {updated: true}); 
    default: 
     return state; 
    } 
} 

ठेठ linters कि काफी आसानी से ले सकते हैं और एक पक्ष लाभ यह है कि आप अपनी चिंताओं को करने के लिए अपने कार्यों को तोड़ सकता है है।

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