Spec-Zone.ru › ESLint

no-console

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

💡 есть предложения

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

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

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, но не перезапись 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