tslint บอกว่าไม่อนุญาตให้โทรไปที่ console.log - ฉันจะอนุญาตได้อย่างไร


107

ฉันเพิ่งเริ่มใช้ create-react-app กับ typescript

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

และคอนฟิกูเรชัน tslint.json ดีฟอลต์ไม่อนุญาต console.log ()

ฉันจะเปิดใช้งาน console.log ได้อย่างไร

เอกสารสำหรับการนี้อยู่ที่ https://palantir.github.io/tslint/rules/no-console/ แต่พวกเขาไม่ได้บอกว่าจะวางบรรทัดนี้ไว้ที่ไหน:

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

ฉันค้นหาและพบไวยากรณ์ไฟล์การกำหนดค่า tslint.jsonนี้ดังนั้นฉันจึงลองสิ่งนี้:

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

ในความพยายามที่จะรับข้อความบันทึกที่เป็นเพียงคำเตือน แต่นั่นไม่ได้ผล

ฉันได้แสดงความคิดเห็นเกี่ยวกับ console.log () บางบรรทัดที่ฉันมี แต่จะต้องการให้ทำได้ในอนาคต

คำตอบ:


211

เพิ่ม// tslint:disable-next-line:no-consoleในบรรทัดก่อนโทรconsole.logเพื่อป้องกันข้อความแสดงข้อผิดพลาดเพียงครั้งเดียว

หากคุณต้องการปิดใช้งานกฎทั้งหมดให้เพิ่มสิ่งต่อไปนี้ลงtslint.jsonในโฟลเดอร์รากของคุณ:

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

6
ฉันไม่แน่ใจว่าเกิดอะไรขึ้น แต่ตอนนี้ "no-console": false ใช้งานไม่ได้สำหรับฉัน ฉันพบวิธีแก้ไขคือวางไว้// tslint:disable:no-consoleที่ด้านบนของไฟล์
PatS

10
"no-console": false ใช้ได้สำหรับฉัน แต่ฉันต้องรีสตาร์ท "npm start" เพื่อให้มีผล
jlb

2
"no-console": falsenpm run startไม่ทำงานสำหรับฉันแม้จะมี
Eric Fulmer

18
@EricFulmer ใส่ไว้ในโหนด "jsRules" "jsRules": {"no-console": false}
billb

ฉันเพิ่มกฎjsRulesและดำเนินการใหม่yarn startก่อนที่ข้อผิดพลาดจะหายไป ไม่แน่ใจว่าอันไหนทำ
Byron Wall

28

สำหรับพวกคุณที่มาที่นี่ด้วย codebase แบบผสมของ javascript และ typescript

คุณอาจต้องกำหนดอ็อพชัน 'no-console' ใน jsRules อ็อบเจกต์กฎ jslints สำหรับไฟล์ javascript กล่าวคือมีอ็อบเจ็กต์กฎแยกต่างหากสำหรับ javascript และ typescript

//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
  }
}

แต่ - จุดประสงค์ของสิ่งนี้คืออะไร?
roberto tomás

ของ jsRules หรือ no-console?
Lee Brindley

ไม่มีคอนโซล - ดูเหมือนว่า (ฉันค้นหาแล้ว) มีเพียงเพื่อเตือนคุณว่าข้อความคอนโซลไม่ได้อยู่ในรหัสการผลิต นั่นทำให้มันเป็นกฎที่น่าสงสัยเมื่อใดก็ตามที่ env ของคุณไม่ได้
แยแส

ฉันเห็นประเด็นของคุณในระดับหนึ่ง สิ่งหนึ่งที่ควรพิจารณาคือคอนโซลไม่ได้เป็นส่วนหนึ่งของภาษาจาวาสคริปต์โดยปกติจะใช้ในเอ็นจิ้นจาวาสคริปต์นั่นคือประเด็นแม้ว่า - ไม่ใช่ส่วนหนึ่งของภาษาจาวาสคริปต์ แต่คุณกำลังพึ่งพารหัสของคุณที่อาจมีหรือไม่มีอยู่ . จากที่กล่าวมาฉันสามารถเห็นการใช้กฎนี้
Lee Brindley

1
@ robertotomásกฎนี้ยึดตามแนวปฏิบัติที่ดีที่สุดในการไม่มีข้อความ console.log ในโค้ดของคุณ รหัสการผลิตไม่ควรมีดังนั้นสิ่งนี้จะช่วยให้คุณทราบว่ายังไม่พร้อมใช้งาน คุณอาจมีการกำหนดค่า tslint สองแบบแบบหนึ่งที่อนุญาตและอีกแบบที่ไม่มี ฉันมีlogger.infoฟังก์ชั่นที่เรียกใช้console.log(เช่น wrapper) ซึ่งช่วยให้ฉันสามารถเปิดหรือปิดการบันทึกสำหรับทั้งแอพได้อย่างง่ายดาย ฉันไม่ได้บอกว่านี่เป็นแนวทางปฏิบัติที่ดีที่สุด แต่เป็นเพียงสิ่งที่ฉันเคยทำ นอกจากนี้ยังทำให้ง่ายต่อการทำงานร่วมกับคนตัดไม้อื่นเช่นgithub.com/krakenjs/beaver-logger
PatS


6

นี่คือไวยากรณ์ที่ถูกต้องในการกำหนดกฎ no-console (หรือกฎอื่น ๆ สำหรับเรื่องนั้น) แต่จะมีเพียงคำเตือนแทนที่จะเป็นข้อผิดพลาด (เห็นได้ชัดว่าเปลี่ยนตัวเลือกเป็นสิ่งที่คุณต้องการ)

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

สิ่งนี้ใช้ได้ดีตามคำเตือน BTW สิ่งนี้ไม่ได้บันทึกไว้ในเอกสาร tslint
nelson6e65

1

ใน typeScript เวอร์ชัน 3 อัปเดต tslint.json ภายใต้กฎสำคัญดังนี้:

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

ด้วยวิธีนี้คุณเพียงแค่ระบุ debug, time, timeEnd, trace ที่จะไม่ใช้ถ้าใน tslint เริ่มต้นของคุณ "info" อยู่ในรายการเพียงแค่ลบออก


1
นี่คือวิธีที่ควรทำตามที่ระบุไว้ใน docs palantir.github.io/tslint/rules/no-console
Christopher Grigg

1

วิธีที่ฉันจัดการกับกฎ "no-console" ของ tslintคือต่อไฟล์ที่ฉันพบว่าสะดวกและแยกได้ในขั้นตอนการพัฒนา

ทันทีที่ฉันต้องใช้ console.log () ตัวแรก; Visual Studio Code แสดงตัวเลือกในการเพิ่ม:

// tslint: disable-next-line: no-console

console.log ();

ที่นี่ฉันแค่ลบ "-next-line" และคำสั่งนี้จะครอบคลุมทั้งไฟล์

// tslint: ปิดการใช้งาน: no-console

console.log ();

ฉันหวังว่ามันจะช่วยเป็นอีกทางเลือกหนึ่งในการปิดใช้งานคุณสมบัติสำหรับทั้งแอพ

RON


0

ตามเอกสาร: https://eslint.org/docs/user-guide/getting-started#configuration

  • "off" หรือ 0 - ปิดกฎ
  • "เตือน" หรือ 1 - เปิดกฎเป็นคำเตือน (ไม่มีผลกับรหัสทางออก)
  • "error" หรือ 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
    }
 }

ป้อนคำอธิบายภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.