no-console
禁止使用 console
💡 有建議
此規則報告的某些問題可以透過編輯器建議手動修正
在設計為在瀏覽器中執行的 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 開發,那麼您很可能不希望啟用此規則。
您可能不使用此規則的另一種情況是,如果您想要強制執行 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
。您可以使用 no-restricted-syntax
規則達到僅接收 console 呼叫錯誤的效果
{
"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 中引入。