我正在研究一个React.js应用程序而我正在尝试lint我的代码。我使用Airbnb风格的ESLint,但我有这些错误:
../src/Test.jsx
4:2 error Unexpected tab character no-tabs
5:2 error Unexpected tab character no-tabs
5:3 error Expected indentation of 2 space characters but found 0 react/jsx-indent
6:2 error Unexpected tab character no-tabs
这是我的代码:
Test.jsx:
import React from 'react';
function Test() {
return (
<h1>Test</h1>
);
}
export default Test;
.eslintrc:
{
"env": {
"browser": true,
"es6": true,
"node": true
},
"extends": "airbnb",
"parser": "babel-eslint",
"rules": {
"indent": [2, "tab", { "SwitchCase": 1, "VariableDeclarator": 1 }],
"react/prop-types": 0,
"react/jsx-indent-props": [2, "tab"],
}
}
如上所示,我想缩进标签。
webpack.config.js:
loaders: [{
test: /\.jsx$|\.js$/,
loaders: ["babel-loader", "eslint-loader"],
exclude: /node_modules/
},
...
]
我还试图缩进为什么有2个空格,但没有成功。我真的不明白为什么我有这些错误。你有什么想法吗?
谢谢!
答案 0 :(得分:7)
正如@ mark-willian告诉我的那样,我在 .eslintrc 中添加了一些内容并且有效:
{
"env": {
"browser": true,
"es6": true,
"node": true
},
"extends": "airbnb",
"parser": "babel-eslint",
"rules": {
"indent": [2, "tab", { "SwitchCase": 1, "VariableDeclarator": 1 }],
"no-tabs": 0,
"react/prop-types": 0,
"react/jsx-indent": [2, "tab"],
"react/jsx-indent-props": [2, "tab"],
}
}
感谢您的所有答案。
答案 1 :(得分:1)
airbnb规则要求您使用空格而不是制表符来格式化代码。好的编辑器(sublime是一个!)将允许您使用选项卡,但在保存代码时将它们转换为空格。
您需要更改sublime的配置;转到偏好设置 - 设置并自定义以下设置:
"tab_size": 2,
"translate_tabs_to_spaces": true
Sublime会转换您现有的代码 - 点击右下方状态栏中显示标签或空格的文字。
如果(例如)某个airbnb规则与您的编码风格指南不匹配,您可以有选择地关闭eslint规则。
答案 2 :(得分:0)
尝试替换every tab to spaces。
在webpack配置中使用ESLint autofix启用this eslint-loader
option功能也是一个好主意。