no-console
禁止使用console
💡 hasSuggestions
此规则报告的一些问题可以通过编辑器建议手动修复。
在设计用于在浏览器中执行的 JavaScript 中,避免使用console
上的方法被认为是一种最佳实践。此类消息被认为用于调试目的,因此不适合发送给客户端。通常,在推送到生产环境之前,应删除使用console
的调用。
console.log("Made it here.");
console.error("That shouldn't have happened.");
规则详细信息
此规则禁止对console
对象的任何方法进行调用或赋值。
此规则的错误代码示例
在游乐场中打开
/* eslint no-console: "error" */
("Log a debug level message.");
("Log a warn level message.");
("Log an error level message.");
= foo();
此规则的正确代码示例
在游乐场中打开
/* eslint no-console: "error" */
// custom console
Console.log("Hello world!");
选项
此规则有一个用于异常的对象选项
"allow"
包含一个字符串数组,这些字符串是console
对象的允许方法
使用示例{ "allow": ["warn", "error"] }
选项的此规则的其他正确代码示例
在游乐场中打开
/* 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 开发,那么您很可能不希望启用此规则。
您可能不使用此规则的另一种情况是,如果您想强制执行控制台调用而不是覆盖控制台。例如
/* 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
。您可以使用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"
}
]
}
}
相关规则
版本
此规则在 ESLint v0.0.2 中引入。