Cod*_*lot 61 javascript ecmascript-6 reactjs eslint
Parsing error: Unexpected token =当我尝试lint我的Es6类时,ESLint会抛出一个错误.在eslint中启用胖箭头类方法我缺少什么配置参数?
样本类:
class App extends React.Component{
...
handleClick = (evt) => {
...
}
}
Run Code Online (Sandbox Code Playgroud)
.eslint
{
"ecmaFeatures": {
"jsx": true,
"modules":true,
"arrowFunctions":true,
"classes":true,
"spread":true,
},
"env": {
"browser": true,
"node": true,
"es6": true
},
"rules": {
"strict": 0,
"no-underscore-dangle": 0,
"quotes": [
2,
"single"
],
}
}
Run Code Online (Sandbox Code Playgroud)
Ily*_*din 38
如果要使用实验性功能(例如箭头作为类方法),则需要将其babel-eslint用作解析器.默认解析器(Espree)不支持实验性功能.
spe*_*.sm 13
首先安装babel-eslint:
npm i -D babel-eslint
Run Code Online (Sandbox Code Playgroud)
然后将以下内容添加到您的.eslintrc.json文件中:
"parser": "babel-eslint"
Run Code Online (Sandbox Code Playgroud)
首先安装这些插件:
npm i -D babel-eslint eslint-plugin-babel
然后将这些设置添加到您的 eslint 配置文件中:
.eslintrc.json
{
"plugins": [ "babel" ],
"parser": "babel-eslint",
"rules": {
"no-invalid-this": 0,
"babel/no-invalid-this": 1,
}
}
Run Code Online (Sandbox Code Playgroud)
这样你就可以使用no-invalid-this粗箭头类方法,而且你不会从 eslint得到任何错误。
快乐编码
从我在错误消息中读到的Parsing error: Unexpected token =内容来看,它看起来像是一个解析器错误而不是linter one.
假设您使用Babel作为JavaScript编译器/转换器以及babel-eslint您的ESLint解析器,可能是Babel抱怨语法,而不是ESLint.
问题不是关于箭头函数,而是更实验性的(ES7 ??),我认为它被称为属性初始化器或类实例字段(或两者:)).
如果要使用此新语法/功能,则需要preset-stage-1在Babel中启用.此预设包括syntax-class-properties允许该语法的插件.
加起来:
安装babel预设:
npm install babel-preset-stage-1
Run Code Online (Sandbox Code Playgroud)如果您使用的是webpack ,请将此预设添加到预设列表中(我假设您已经在使用es2015和react预设),或者在您.babelrc的babel-loader查询字段中或在您的查询字段中.
"presets": ["es2015", "stage-1", "react"]
Run Code Online (Sandbox Code Playgroud)小智 5
我今天遇到了同样的问题
和@dreyescat的回答对我有用.
默认情况下,巴贝尔使用3个预设:es2015,react,stage-2
屏幕截图"Parsing error:Unexpected token ="
然后,如果您还选择stage-1预设,则错误消失
您可以自己在bebeljs.io网站上进行测试