tslint каже, що дзвінки до console.log заборонені - Як це дозволити?


101

Я щойно почав використовувати create-response-app з typecript

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 (), які у мене є, але буду хотіти мати можливість робити це в майбутньому.

Відповіді:


198

Додайте // 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": falseне працює у мене, навіть з npm run start.
Ерік Фулмер,

18
@EricFulmer помістив це у вузол "jsRules". "jsRules": {"no-console": false},
billb

Я додав правило jsRulesта зробив нове, yarn startперш ніж помилки зникли. Не впевнений, хто з тих, хто це зробив.
Байрон Уолл,

27

Для тих, хто приходить сюди зі змішаною кодовою базою javascript та машинопису.

Можливо, вам доведеться визначити параметр 'no-console' у jsRules, об'єкт правил jslints для файлів javascript, тобто існують окремі об'єкти правил для javascript та typecript.

//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, або без консолі?
Лі Бріндлі,

no-console - здається (я шукав), що він є лише для того, щоб попередити вас, що повідомлення консолі не належать до виробничого коду. Це як би ставить сумнівне правило в будь-який час, коли ваше
оточення не продається

Я бачу вашу думку, до певної міри. Слід врахувати те, що консоль не є частиною мови javascript, вона зазвичай реалізована в движках javascript, в цьому і полягає суть - вона не є частиною мови javascript, ви закладаєте залежність у свій код, яка може існувати або не існувати . З урахуванням сказаного, я бачу використання цього правила.
Лі Бріндлі

@ robertotomás, Це правило базується на найкращій практиці відсутності повідомлень console.log у вашому коді. У виробничому коді цього не повинно бути, тож це дає змогу знати, що ваш продукт не готовий. Можливо, у вас є дві конфігурації tslint - одна, яка дозволяє це, а інша - ні. У мене є logger.infoфункція, яка викликає console.log(тобто обгортку), що дозволяє мені легко вмикати або вимикати ведення журналу для всього додатка. Я не кажу, що це найкраща практика, просто те, що я вже робив. Це також полегшує інтеграцію з іншим реєстратором, таким як github.com/krakenjs/beaver-logger .
PatS

8

Додайте наступне до вашого tslint.json

{
   "rules": {
      "no-console": {
         "severity": "warning",
      } 
   }
}

6

Це правильний синтаксис для визначення правила no-console (або будь-якого іншого правила з цього приводу), але лише із попередженням, а не помилкою (очевидно, змініть параметри на будь-яке, що хочете)

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

Це чудово працює як попередження. До речі, це не задокументовано у документації tslint.
nelson6e65

1

у версії TypeScript 3 оновіть tslint.json за правилом ключа, як показано нижче:

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

таким чином ви просто вказуєте налагоджувальний, час, timeEnd, трасування, яке не використовуватиметься, якщо у вашому типовому tslint "info" є у списку, просто видаліть його.


1
Це слід робити так, як зазначено в документах palantir.github.io/tslint/rules/no-console
Крістофер Грігг,

1

Я обробляю правило tslint "no-console" для кожного файлу, який, на мою думку, є зручним та ізольованим на етапі розробки.

Як тільки мені потрібно використовувати перший console.log (); Код Visual Studio показує можливість додавання:

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

console.log ();

Отже, тут я просто видаляю "-next-line", і ця команда охоплює весь файл.

// tslint: вимкнути: no-console

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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.