Tslint сообщает, что вызовы console.info не разрешены. Как мне это разрешить?

Я только начал использовать приложение create-response-app с машинописным текстом

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

а конфигурация tslint.json по умолчанию не допускает console.info ().

Как я могу (пока) включить console.info?

Документация для этого находится в https://palantir.github.io/tslint/rules/no-console/. Но они не говорят, где поставить эту строчку:

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

Я искал и нашел этот Синтаксис файла конфигурации tslint.json, поэтому попробовал это:

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

В попытке получить сообщения журнала, которые были бы просто предупреждениями. Но это не сработало.

Я закомментировал несколько строк console.info (), которые у меня есть, но я хочу иметь возможность сделать это в будущем.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
114
0
93 922
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Ответ принят как подходящий

Добавьте // tslint:disable-next-line:no-console в строку прямо перед вызовом console.info, чтобы предотвратить появление сообщения об ошибке только один раз.

Если вы хотите полностью отключить правило, добавьте следующее на ваш tslint.json (скорее всего, в вашу корневую папку):

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

Я не уверен, что произошло, но теперь "no-console": false у меня не работает. Я нашел способ обойтись без // tslint:disable:no-console в верхней части файла.

PatS 26.04.2018 19:07

"no-console": false работает для меня, но мне нужно перезапустить "npm start", чтобы он вступил в силу.

jlb 21.05.2018 21:56
"no-console": false у меня не работает, даже с npm run start.
Eric Fulmer 22.05.2018 20:16

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

billb 25.05.2018 18:26

Я добавил правило в jsRules и сделал новый yarn start, прежде чем ошибки исчезли. Не уверен, кто из них это сделал.

Byron Wall 01.06.2018 22:26

или в той же строке, что и следующий: console.info('hello world'); // tslint:disable-line:no-console

Sergei Kovalenko 03.01.2020 11:46

Согласно документам: https://eslint.org/docs/user-guide/getting-started#configuration

  • "off" или 0 - выключить правило
  • «warn» или 1 - включить правило как предупреждение (не влияет на код выхода)
  • «ошибка» или 2 - включить правило как ошибку (код выхода будет 1)

Кстати, ваша правильная настройка будет

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

Для тех из вас, кто пришел сюда со смешанной базой кода javascript и машинописного текста.

Возможно, вам потребуется определить опцию 'no-console' в jsRules, объекте правил jslints для файлов javascript, т.е. существуют отдельные объекты правил для javascript и машинописного текста.

//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 13.06.2019 16:33

Из jsRules или без консоли?

Lee Brindley 13.06.2019 17:01

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

roberto tomás 13.06.2019 17:38

В какой-то степени я понимаю вашу точку зрения. Одна вещь, которую следует учитывать, заключается в том, что консоль не является частью языка javascript, она обычно реализуется в движках javascript, но в этом суть - она ​​не является частью языка javascript, вы запекаете зависимость в своем коде, которая может существовать или не существовать . С учетом сказанного, я вижу применение этого правила.

Lee Brindley 13.06.2019 20:42

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

PatS 13.08.2019 20:16

Добавьте следующее к вашему tslint.json

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

Это правильный синтаксис для определения правила без консоли (или любого другого правила в этом отношении), но только с предупреждением, а не с ошибкой (очевидно, измените параметры на все, что хотите)

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

Это отлично работает как предупреждение. Кстати, это не задокументировано в документации tslint.

nelson6e65 05.02.2020 05:40

в typeScript версии 3 обновите tslint.json в соответствии с ключевым правилом, как показано ниже:

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

таким образом вы просто указываете debug, time, timeEnd, trace, которые не будут использоваться, если в вашем tslint по умолчанию "информация" есть в списке, просто удалите его.

Вот как это должно быть сделано, как указано в документах palantir.github.io/tslint/rules/no-console

Christopher Grigg 26.02.2020 02:50

если // tslint:disable-next-line:no-console не работает, попробуйте // eslint:disable-next-line:no-console

  {
    "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
    }
 }

Я обрабатываю tslint правило "без консоли" для каждого файла, который, как я обнаружил, удобен и изолирован на этапе разработки.

Как только мне нужно использовать первую console.info (); Visual Studio Code показывает возможность добавить:

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

console.info();

Итак, здесь я просто удаляю «-next-line», и эта команда покрывает весь файл.

// tslint:disable: no-console

console.info();

Я надеюсь, что в качестве альтернативы отключение этой функции для всего приложения поможет.

РОН

Другие вопросы по теме

Нажатие на api проверки и сохранение сеанса пользователя после входа в систему
Как расширить компонент в Typescript и выяснить необходимые аргументы? Пример использования: Угловой - расширяющаяся боковая навигация по коврику
Как использовать плагин jQuery с Angular 5 и TypeScript 2.8.1?
Почему моя таблица данных не заполняется с помощью * ngFor в angular?
Ошибки тестирования в Angular 5 Unit Testing после подписки
Как обрабатывать игровой цикл с помощью vue + vuex (или любой другой структуры управления состоянием)
Машинопись преобразовывает строку объекта в формат даты мм / дд / гггг
Ошибка: истекло время ожидания функции, убедитесь, что обратный вызов выполняется в течение 5000 миллисекунд
Как работать с дополнительными свойствами интерфейса в машинописном тексте
Я пытаюсь изменить количество элементов в функции карты с помощью карты одним нажатием кнопки, но она не работает при нажатии