Spec-Zone.ru › ESLint

no-console

Запрещает использование console

💡 hasSuggestions

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

В JavaScript, предназначенном для выполнения в браузере, считается лучшей практикой избегать использования методов объекта console. Такие сообщения считаются предназначенными для отладки и поэтому не подходят для отправки клиенту. В общем случае вызовы с использованием console должны быть удалены перед публикацией в производство.

console.log("Made it here.");
console.error("That shouldn't have happened.");

Подробное описание правила

Это правило запрещает вызовы или присваивания методам объекта console

Примеры неправильного кода для этого правила:

Открыть в Playground
/* eslint no-console: "error" */

console.log("Log a debug level message.");
console.warn("Log a warn level message.");
console.error("Log an error level message.");
console.log = foo();

Примеры правильного кода для этого правила:

Открыть в Playground
/* eslint no-console: "error" */

// custom console
Console.log("Hello world!");

Параметры

Это правило имеет параметр объекта для исключений:

  • "allow" содержит массив строк, которые являются разрешенными методами объекта console

Примеры дополнительного правильного кода для этого правила с примером параметра { "allow": ["warn", "error"] }

Открыть в Playground
/* eslint no-console: ["error", { allow: ["warn", "error"] }] */

console.warn("Log a warn level message.");
console.error("Log an error level message.");

Когда не следует использовать это правило

Однако, если вы используете Node.js, console используется для вывода информации пользователю и поэтому не используется строго для отладки. Если вы разрабатываете для Node.js, скорее всего, вам не нужно включать это правило.

Еще один случай, когда вы можете не использовать это правило, если хотите принудительно вызывать console, а не перезаписывать его. Например:

/* eslint no-console: ["error", { allow: ["warn"] }] */
console.error = function (message) {
  throw new Error(message);
};

С правилом no-console в приведенном выше примере ESLint сообщит об ошибке. Для вышеприведенного примера можно отключить правило:

// eslint-disable-next-line no-console
console.error = function (message) {
  throw new Error(message);
};

// or

console.error = function (message) {  // eslint-disable-line no-console
  throw new Error(message);
};

Однако, возможно, вы не захотите вручную добавлять eslint-disable-next-line или eslint-disable-line. Можно добиться эффекта получения ошибок только для вызовов console с правилом no-restricted-syntax

{
    "rules": {
        "no-console": "off",
        "no-restricted-syntax": [
            "error",
            {
                "selector": "CallExpression[callee.object.name='console'][callee.property.name!=/^(log|warn|error|info|trace)$/]",
                "message": "Unexpected property on console object was called"
            }
        ]
    }
}

Связанные правила

  • no-alert
  • no-debugger

Версия

Это правило было добавлено в ESLint v0.0.2.

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-console

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API