tslint का कहना है कि कंसोल.लॉग को कॉल की अनुमति नहीं है - मैं इसे कैसे अनुमति दूं?


101

मैंने सिर्फ टाइपस्क्रिप्ट के साथ create-react-app का उपयोग करना शुरू किया

create-react-app my-app --scripts-version=react-scripts-ts

और डिफ़ॉल्ट tslint.json कॉन्फ़िगरेशन कंसोल.log () की अनुमति नहीं देता है।

मैं (अभी के लिए) कंसोल.लॉग को कैसे सक्षम कर सकता हूं?

इसके लिए डॉक्स https://palantir.github.io/tslint/rules/no-console/ पर हैं । लेकिन वे यह नहीं कहते कि यह रेखा कहां रखी जाए:

    "no-console": [true, "log", "error"]

मैंने इस tslint.json कॉन्फ़िगरेशन फ़ाइल सिंटैक्स को खोजा और पाया , इसलिए मैंने यह कोशिश की:

"rules": {
    "no-console": [true, "warning"]
}

लॉग संदेश प्राप्त करने के प्रयास में जो केवल चेतावनी होगी। लेकिन वह काम नहीं किया।

मैंने कुछ सांत्वनाओं पर टिप्पणी की है। मेरे पास कुछ लाइनें हैं। लेकिन मैं भविष्य में ऐसा करने में सक्षम होना चाहूंगा।

जवाबों:


198

केवल एक बार त्रुटि संदेश को रोकने के लिए // tslint:disable-next-line:no-consoleअपने कॉल से ठीक पहले लाइन में जोड़ें console.log

यदि आप नियम को पूरी तरह से अक्षम करना चाहते हैं, तो निम्नलिखित को अपने tslint.json(अपने रूट फ़ोल्डर में सबसे अधिक संभावना) में जोड़ें:

{
    "rules": {
        "no-console": false
    }
}

6
मुझे यकीन नहीं है कि क्या हुआ था, लेकिन अब "नो-कंसोल": गलत मेरे लिए काम नहीं कर रहा है। मैंने पाया है // tslint:disable:no-consoleकि फ़ाइल के शीर्ष पर एक काम है ।
17

10
"नो-कंसोल": मेरे लिए गलत काम करता है, लेकिन मुझे इसे प्रभावी करने के लिए "एनपीएम स्टार्ट" को पुनः आरंभ करना होगा।
jlb

2
"no-console": falseमेरे साथ भी काम नहीं करता है npm run start
एरिक फुलमर

18
@ EricFulmer ने "jsRules" नोड में डाल दिया। "jsRules": {"no-कंसोल": false},
बिलब

मैंने नियम जोड़ा jsRulesऔर yarn startत्रुटियों को दूर करने से पहले एक नया किया । निश्चित नहीं कि उनमें से किसने ऐसा किया था।
बायरन वॉल

27

उन लोगों के लिए जो जावास्क्रिप्ट और टाइपस्क्रिप्ट के मिश्रित कोडबेस के साथ यहां आ रहे हैं।

आपको jsRules में jslints रूल्स ऑब्जेक्ट के लिए jsRules में 'no-कंसोल' विकल्प को परिभाषित करने की आवश्यकता हो सकती है, यानी जावास्क्रिप्ट और टाइपस्क्रिप्ट के लिए अलग-अलग नियम ऑब्जेक्ट हैं।

//tslint.json

{
  "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"], //Example... 
  "rules": {
    "no-console": false //Disable for typescript
  },
  "jsRules": {
    "no-console": false //Disable for javascript
  }
}

लेकिन - इस बात का उद्देश्य क्या है?
रॉबर्टो टेसू

JsRules की, या कोई कंसोल की?
ली ब्रिंडले

नो-कंसोल - ऐसा लगता है (मैंने इसे देखा) यह केवल आपको चेतावनी देने के लिए है कि कंसोल संदेश उत्पादन कोड में नहीं हैं। यह थोथा इसे एक संदिग्ध नियम बनाता है जब भी आपका ईवीआई ठेस नहीं होता है
रोबर्टो टॉमु

मैं आपकी बात को एक हद तक देखता हूं। एक बात पर विचार करना है कि कंसोल जावास्क्रिप्ट भाषा का हिस्सा नहीं है, यह आमतौर पर जावास्क्रिप्ट इंजनों में लागू किया जाता है, हालांकि यह बात है - यह जावास्क्रिप्ट भाषा का हिस्सा नहीं है, आप अपने कोड में एक निर्भरता को पका रहे हैं जो मौजूद हो सकता है या नहीं। । उस नियम के साथ, मैं इस नियम का उपयोग देख सकता हूं।
ली ब्रिंडले

@ robertotomás, यह नियम आपके कोड में कंसोल.लॉग संदेश नहीं होने के सर्वोत्तम अभ्यास पर आधारित है। उत्पादन कोड में यह नहीं होना चाहिए, तो इससे आपको पता चल जाएगा कि आप तैयार नहीं हैं। आपके पास दो tslint कॉन्फ़िगरेशन हो सकते हैं जो इसे अनुमति देता है और दूसरा जो ऐसा नहीं करता है। मेरे पास एक logger.infoफ़ंक्शन है जो कॉल करता है console.log(एक रैपर) जो मुझे पूरे ऐप के लिए लॉगिंग को आसानी से सक्षम या अक्षम करने की अनुमति देता है। मैं यह नहीं कह रहा हूं कि यह सबसे अच्छा अभ्यास है, बस कुछ ऐसा है जो मैंने किया है। यह एक अन्य लकड़हारे जैसे github.com/krakenjs/beaver-logger के साथ एकीकृत करना भी आसान बनाता है ।
पेट्स


6

यह नो-कंसोल नियम (या उस मामले के लिए कोई अन्य नियम) को परिभाषित करने के लिए सही सिंटैक्स है, लेकिन केवल एक त्रुटि के बजाय एक चेतावनी के साथ (जाहिर है कि आप जो भी चाहते हैं उसके विकल्प बदलें)

"no-console": {
    "severity": "warning",
    "options": [
        "log",
        "error",
        "debug",
        "info",
        "time",
        "timeEnd",
        "trace"
    ]
},

यह चेतावनी के रूप में पूरी तरह से काम करता है। BTW, यह tslint प्रलेखन में प्रलेखित नहीं है।
nelson6e65

1

टाइपस्क्रिप्ट संस्करण 3 में tslint.json को मुख्य नियम के तहत नीचे की तरह अपडेट करें:

"no-console": [
    true,
    "debug",
    "time",
    "timeEnd",
    "trace"
],

इस तरह से आप बस डिबग, समय, समय निर्दिष्ट करते हैं, उपयोग किए जाने वाले ट्रेस, यदि आपका डिफ़ॉल्ट tslint "जानकारी" सूची में है तो इसे हटा दें।


1
यह वह तरीका है जैसा कि डॉक्स में कहा जाना चाहिए जैसे कि palantir.github.io/tslint/rules/no-console
क्रिस्टोफर ग्रिग

1

जिस तरह से मैं tslint "नो-कंसोल" नियम को संभालता हूं, वह फाइल है जो मुझे मिली है, विकास के चरण में सुविधाजनक और अलग-थलग है।

जैसे ही मुझे पहले कंसोल का उपयोग करने की आवश्यकता है। (); विजुअल स्टूडियो कोड जोड़ने का विकल्प दिखाता है:

// tslint: अक्षम-अगली-पंक्ति: नहीं-कंसोल

console.log ();

इसलिए यहां मैं "-next-line" को हटा देता हूं और यह कमांड पूरी फाइल को कवर कर देगा।

// tslint: अक्षम: नहीं-कंसोल

console.log ();

मुझे आशा है कि यह संपूर्ण ऐप के लिए सुविधा को अक्षम करने के विकल्प के रूप में मदद करता है।

रॉन


0

डॉक्स के अनुसार: https://eslint.org/docs/user-guide/getting-started#configuration

  • "बंद" या 0 - नियम को बंद करें
  • "चेतावनी" या 1 - एक चेतावनी के रूप में नियम को चालू करें (निकास कोड को प्रभावित न करें)
  • "त्रुटि" या 2 - एक त्रुटि के रूप में नियम को चालू करें (निकास कोड 1 होगा)

वैसे, आपका सही सेटअप होगा

{
  "rules": {
    "no-console": false
  }
}


0
  {
    "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"],
    "linterOptions": {
        "exclude": [
            "config/**/*.js",
            "node_modules/**/*.ts",
            "coverage/lcov-report/*.js"
        ]
    },
    "rules": {
        "no-console": false
    },
    "jsRules": {
        "no-console": false
    }
 }

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.