1、Strings must use singlequote? —— 字符串必須使用單引號
2、Extra semicolon?semi——額外的分號:一行語句結尾不能添加分號
?3、'Unexpected trailing comma' —— 行尾多了一個逗號
4、Newline required at end of file but not found? ——文件結尾必須要新加一行
5、'xxx' is assigned a value but never used??no-unused-vars ——?’xxx‘’變量已經聲明了,但是從未被使用
6、Missing space before =>??——箭頭函數前(括號后)缺少一個空格(箭頭 => 前后都要加)
錯誤示例?:
(x)=>{...}
正確應為:(x) => { ... }
(箭頭前后均需空格)
涉及規則:arrow-spacing
7、Trailing spaces not allowed ——?存在多余空格,刪除多余的空格
8、A space is required after/before 'x'??——在某個符號前面/后面需要加一個空格
錯誤示例?:
const arr = [1,2,3]
正確應為:const arr = [1, 2, 3]
(逗號后需添加空格)
涉及規則:comma-spacing
9、Missing space before value for key 'x'? ——對象的值與鍵值對之間的冒號間缺少一個空格
錯誤示例?:
{ a:1 }
正確應為:{ a: 1 }
(冒號后需添加空格,冒號前無需空格)
涉及規則:key-spacing
10、Missing space before function parentheses??——函數圓括號前缺少空格
// 錯誤示例(命名函數)
function demo(){...} ? // 缺少空格
const obj = {demo:function(){...}} ?// `function` 關鍵字后缺少空格
// 正確示例 ?
function demo () {...} ?
const obj = {demo: function () {...}} ?
解決方案
1. 調整 ESLint 配置(推薦)?
在項目根目錄的?
.eslintrc.js
?文件中修改規則配置:module.exports = {rules: {'space-before-function-paren': ['error', 'always'] // 強制添加空格?:ml-citation{ref="1,4" data="citationList"}// 或關閉規則檢查 'space-before-function-paren': 0 // 禁用規則?:ml-citation{ref="1,2" data="citationList"}} };
- 需重啟項目?:修改配置后必須重啟項目才能生效?。
- ?匿名函數與命名函數差異?:匿名函數(如對象方法)的?
function
?關鍵字后需空格,命名函數需在函數名后加空格??2. 修復代碼格式?
手動在函數聲明或表達式處添加空格:
// 命名函數 function demo () { ... } // 匿名函數(對象方法) const obj = {demo: function () { ... } // `function` 后需空格?:ml-citation{ref="8" data="citationList"} }; // 箭頭函數(若適用其他規則) const demo = () => { ... };
?3. 處理格式化工具沖突?
若使用 Prettier 等工具自動格式化導致沖突,需調整其配置與 ESLint 規則一致。例如在?
.prettierrc
?中配置:{"spaceBeforeFunctionParen": true }
?4. 使用 ESLint 自動修復?
通過命令行修復代碼(需確保規則未禁用):
eslint --fix your-file.js
?其他注意事項?
(1)行內禁用規則?:在特定代碼段跳過檢查:
/* eslint-disable space-before-function-paren */ function demo(){ ... } // 不觸發規則 /* eslint-enable space-before-function-paren */
(2)配置優先級?:項目級?
.eslintrc.js
?優先級高于全局配置,確保修改正確文件?
11、Missing space before opening brace? ?—— 左大括號后換行
// 錯誤示例 ?
function demo(){ ... } ?
if (condition){ ... } ?// 正確示例 ?
function demo() { ... } ?
if (condition) { ... } ?
13、Expected indentation of 2 spaces but found 4 ——?ESLint 默認要求使用 ?2 個空格? 作為縮進,但實際檢測到 ?4 個空格??
// 錯誤示例(4 空格縮進)
function demo() {
? ? console.log("test"); ?// 縮進為 4 空格
}
// 正確示例(2 空格縮進)
function demo() {
? console.log("test"); ? ?// 縮進為 2 空格
}
解決方案?
?1. 關閉 ESLint 縮進檢查(快速修復)
在?
.eslintrc.js
?中禁用?indent
?規則:module.exports = {rules: {'indent': 'off' // 關閉縮進檢查?:ml-citation{ref="1,2" data="citationList"}} };
此方法可快速消除報錯,但會導致代碼風格不一致,建議團隊項目慎用。
?2. 調整縮進規則為 4 空格(推薦)
若需保持 4 空格縮進,可修改?
indent
?規則配置:module.exports = {rules: {'indent': ['error', 4] // 強制使用 4 空格縮進?:ml-citation{ref="3,7" data="citationList"}} };
需注意:部分 ESLint 插件(如?
vue
)可能需單獨配置縮進規則??3. 配置編輯器自動縮進
在編輯器中設置 ?Tab 轉換為 2 個空格?(以 VS Code 為例):
- 打開設置(
Ctrl+,
),搜索?tab size
。- 設置?
Editor: Tab Size
?和?Editor: Detect Indentation
?4. 使用 ESLint 自動修復
通過命令行修復縮進問題(需確保?
indent
?規則已啟用):eslint --fix your-file.js # 自動修復縮進?:ml-citation{ref="5,6" data="citationList"}
?注意事項:
配置文件優先級?:
- 項目根目錄的?
.eslintrc.js
?優先級高于全局配置,確保修改正確的文件?。- 若項目使用?
vue
?框架,需檢查?vue/script-indent
?等插件規則是否沖突?。?與 Prettier 等工具沖突?:
- 若同時使用 Prettier,需在?
.prettierrc
?中配置?"tabWidth": 2
,與 ESLint 規則保持一致?67。?行內禁用規則?:
可在特定代碼段跳過縮進檢查:/* eslint-disable indent */ function demo() {console.log("test"); // 臨時允許 4 空格縮進 } /* eslint-enable indent */
14、 'Unexpected template string expression'——? 使用了不必要的模板字符串表達式
(1)模板字符串未使用反引號?:使用單引號或雙引號包裹模板字符串,導致?
${}
?表達式被 ESLint 識別為錯誤語法?// 錯誤示例(單引號) const message = 'Hello, ${name}'; // 正確示例(反引號) const message = `Hello, ${name}`;
(2)未閉合的反引號?:模板字符串缺少閉合的反引號,導致語法解析失敗?
// 錯誤示例(未閉合) const message = `Hello, World; // 正確示例 const message = `Hello, World`;
(3)表達式語法錯誤?:模板字符串中的?
${}
?內變量未定義或存在語法問題?// 錯誤示例(變量未定義) const text = `Value: ${undeclaredVar}`; // 正確示例(變量已聲明) const declaredVar = 100; const text = `Value: ${declaredVar}`;
15、'"XXX" is never reassigned. Use 'const'' ——? 此錯誤由 ESLint 的?prefer-const
?規則觸發,表示變量?XXX
?在代碼中聲明為?let
?或?var
,但從未被重新賦值。ESLint 建議改用?const
?聲明,以提高代碼可讀性和安全性(const
?聲明后不可重新賦值)?
// 錯誤示例
let name = "Alice"; // 未重新賦值,卻使用 let
console.log(name);// 正確示例
const name = "Alice"; // 使用 const 聲明
console.log(name);
16、 'Unexpected side effect in "submitParams" computed property' —— 表示在計算屬性?submitParams
?中進行了?副作用操作?(如修改?data
?變量、操作 DOM 或執行異步任務),而計算屬性應僅用于?純計算邏輯?(僅返回依賴數據的計算結果)
// 錯誤示例:在計算屬性中修改 data 變量
computed: {submitParams() {this.selectedValue = 100; // 副作用操作(修改 data 變量)return this.value * 2;}
}
??解決方案
?1. 將副作用操作移至?
watch
?或?methods
若需在數據變化時觸發操作(如賦值、更新 DOM),使用?
watch
?替代?computed
// 正確示例:用 watch 監聽變化 data() {return { selectedValue: 0 }; }, computed: {submitParams() {return this.value * 2; // 僅返回計算結果} }, watch: {submitParams(newVal) {this.selectedValue = newVal; // 副作用操作移至 watch} }
?2. 避免在計算屬性中修改?
data
?變量確保?
computed
?僅依賴其他數據并返回值,不直接修改狀態?// 錯誤:在 computed 中修改 data computed: {submitParams() {this.list.push(1); // 修改 data 數組return this.list;} }// 正確:返回新數組但不修改原數據 computed: {submitParams() {return [...this.list, 1]; // 返回新數組} }
?注意事項
?1、計算屬性的設計原則?
- 若需響應數據變化并執行復雜邏輯,優先使用?
watch
?或?methods
?56。- 計算屬性應為?純函數?,僅根據依賴項返回計算結果,避免修改外部狀態或觸發異步操作?37。
2?、與?
watch
?的區別?
computed
:適用于同步計算,依賴緩存優化性能。watch
:適用于異步操作或需要執行副作用的場景?
17、 'Identifier 'col_names' is not in camel case' —— 沒有使用駝峰方式命名
// 修改前const col_names = ["id", "name"];// 修改后const colNames = ["id", "name"];
18、'Unnecessary use of conditional expression for default assignment' —— 默認賦值不必要地使用條件表達式
?(1) 在 JavaScript 中,使用條件表達式在兩個布爾值之間進行選擇,而不是使用將測試轉換為布爾值,這是一個常見的錯誤
// Bad const isYes = answer === 1 ? true : false;// Good const isYes = answer === 1;// Bad const isNo = answer === 1 ? false : true;// Good const isNo = answer !== 1;
(2) 另一個常見錯誤是將單個變量同時用作條件測試和結果。在這種情況下,可以使用 logical 來提供相同的功能
// Bad foo(bar ? bar : 1);// Good foo(bar || 1);
(3)當存在更簡單的替代方案時,此規則不允許使用三元運算符
//此規則的錯誤代碼示例 /*eslint no-unneeded-ternary: "error"*/const a = x === 2 ? true : false;const b = x ? true : false;//此規則的正確代碼示例/*eslint no-unneeded-ternary: "error"*/const a = x === 2 ? "Yes" : "No";const b = x !== false;const c = x ? "Yes" : "No";const d = x ? y : x;f(x ? x : 1); // default assignment - would be disallowed if defaultAssignment option set to false. See option details below.
官方地址:no-unneeded-ternary - ESLint - 可插拔的 JavaScript Linter