Com este código:
import React from 'react';
import { Link } from 'react-router';
import { View, NavBar } from 'amazeui-touch';
import * as Pages from '../components';
const { Home, ...Components } = Pages;
Eu recebo este erro eslint:
7:16 error Parsing error: Unexpected token .. Why?
Aqui está a minha configuração eslint:
{
"extends": "airbnb",
"rules": {
/* JSX */
"react/prop-types": [1, {
"ignore": ["className", "children", "location", "params", "location*"]
}],
"no-param-reassign": [0, {
"props": false
}],
"prefer-rest-params": 1,
"arrow-body-style": 0,
"prefer-template": 0,
"react/prefer-stateless-function": 1,
"react/jsx-no-bind": [0, {
"ignoreRefs": false,
"allowArrowFunctions": false,
"allowBind": true
}],
}
}
.... .... Qual é o problema?
javascript
reactjs
eslint
DongYao
fonte
fonte
Respostas:
Erros inesperados de token na análise do ESLint ocorrem devido à incompatibilidade entre o ambiente de desenvolvimento e os recursos atuais de análise do ESLint com as alterações em andamento no JavaScripts ES6 ~ 7.
Adicionar a propriedade "parserOptions" ao seu .eslintrc não é mais suficiente para situações específicas, como o uso de
nas classes ES6, pois o ESLint atualmente não pode analisá-lo por conta própria. Essa situação específica gera um erro de:
A solução é ter o ESLint analisado por um analisador compatível. O babel-eslint é um pacote que me salvou recentemente depois de ler esta página e decidi adicioná-lo como uma solução alternativa para quem vier mais tarde.
basta adicionar:
ao seu
.eslintrc
arquivo e executenpm install babel-eslint --save-dev
ouyarn add -D babel-eslint
.Observe que, como a nova API de contexto a partir de
React ^16.3
apresenta algumas alterações importantes, consulte o guia oficial .fonte
yarn add -D babel-eslint
para quem usa fios."parser": "babel-eslint"
instrução config, está no.eslintrc.json
. No meu caso, é um arquivo JSON, mas basicamente o seu arquivo .eslintrc"parser": "babel-eslint"
para o meu arquivo eslintrc mas tem vários erros em seu lugar. Estou trabalhando com o react e ele me diz que meus componentes importados foram chamados, mas nunca usados. O que é estranho.O ESLint 2.x suporta experimentalmente a sintaxe ObjectRestSpread, você pode habilitá-lo adicionando o seguinte ao seu
.eslintrc
: docsO ESLint 1.x não suporta nativamente o operador de propagação, uma maneira de contornar isso é usar o analisador babel-eslint . As instruções mais recentes de instalação e uso estão no leia-me do projeto.
fonte
ecmaFeatures
foi descontinuado. UseecmaVersion
ecmaVersion: 2018
trabalha sem aviso com ESLint 5"parser": "babel-eslint"
me ajudou a corrigir o problemaReferência
fonte
Resolvi esse problema primeiro, instalando o babel-eslint usando o npm
Em segundo lugar, adicione essa configuração no arquivo .eslintrc
fonte
No meu caso (estou usando o Firebase Cloud Functions), abri
.eslintrc.json
e mudei:para:
fonte
Originalmente, a solução era fornecer a seguinte configuração, pois a destruição de objetos costumava ser um recurso experimental e não é suportado por padrão:
Desde a versão 5, essa opção foi preterida .
Agora basta declarar uma versão do ES, que é nova o suficiente:
fonte
Se você tiver uma tarefa de pré-confirmação com a execução husky
eslint
, continue lendo. Eu tentei a maioria das respostasparserOptions
eparser
valores em que meu problema real era sobre a versão do nó que eu estava usando.Minha versão atual do nó era 12.0.0, mas o husky estava usando minha versão padrão da nvm de alguma forma (mesmo que eu não tivesse
nvm
no meu sistema). Este parece ser um problema com o próprio husky . Assim:$HOME/.nvm
pasta que não foi excluída quando eu removidonvm
anteriormente.fonte
Apenas para o registro, se você estiver usando eslint-plugin-vue , o local correto a ser adicionado
'parser': 'babel-eslint'
é dentro deparserOptions
param.https://eslint.vuejs.org/user-guide/#faq
fonte