Za pomocą tego kodu:
import React from 'react';
import { Link } from 'react-router';
import { View, NavBar } from 'amazeui-touch';
import * as Pages from '../components';
const { Home, ...Components } = Pages;
Otrzymuję ten błąd eslint:
7:16 error Parsing error: Unexpected token .. Why?
Oto moja konfiguracja 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
}],
}
}
.... .... Jaki jest problem?
javascript
reactjs
eslint
DongYao
źródło
źródło
Odpowiedzi:
Nieoczekiwane błędy tokenów podczas analizowania ESLint są spowodowane niekompatybilnością pomiędzy twoim środowiskiem programistycznym a obecnymi możliwościami parsowania ESLint z bieżącymi zmianami w JavaScripts ES6 ~ 7.
Dodanie właściwości „parserOptions” do pliku .eslintrc nie wystarcza już w określonych sytuacjach, takich jak używanie
w klasach ES6, ponieważ ESLint nie jest obecnie w stanie samodzielnie go przeanalizować. Ta szczególna sytuacja spowoduje wyświetlenie błędu:
Rozwiązaniem jest przeanalizowanie ESLint przez zgodny parser. babel-eslint to pakiet, który uratował mnie niedawno po przeczytaniu tej strony i zdecydowałem się dodać go jako alternatywne rozwiązanie dla każdego, kto przyjdzie później.
poprostu dodaj:
do swojego
.eslintrc
pliku i uruchomnpm install babel-eslint --save-dev
lubyarn add -D babel-eslint
.Należy pamiętać, że ponieważ nowy interfejs API kontekstu zaczynający się od
React ^16.3
ma kilka ważnych zmian, zapoznaj się z oficjalnym przewodnikiem .źródło
yarn add -D babel-eslint
dla osób używających przędzy."parser": "babel-eslint"
config, znajduje się ona w.eslintrc.json
. W moim przypadku jest to plik JSON, ale w zasadzie twój plik .eslintrc"parser": "babel-eslint"
do mojego pliku eslintrc, ale zamiast tego otrzymałem wiele błędów. Pracuję z React i mówi mi, że moje zaimportowane komponenty zostały wywołane, ale nigdy nie były używane. Co jest dziwne.ESLint 2.x eksperymentalnie obsługuje składnię ObjectRestSpread, możesz ją włączyć, dodając do
.eslintrc
: docsESLint 1.x nie obsługuje natywnie operatora rozprzestrzeniania, jednym ze sposobów obejścia tego jest użycie parsera babel-eslint . Najnowsze instrukcje instalacji i użytkowania znajdują się w pliku Readme projektu.
źródło
ecmaFeatures
został wycofany. UżyjecmaVersion
ecmaVersion: 2018
działa bez ostrzeżenia z ESLint 5"parser": "babel-eslint"
pomógł mi rozwiązać problemOdniesienie
źródło
Rozwiązałem ten problem przez First, instalując babel-eslint przy użyciu npm
Po drugie, dodaj tę konfigurację w pliku .eslintrc
źródło
W moim przypadku (używam Firebase Cloud Functions) otworzyłem
.eslintrc.json
i zmieniłem:do:
źródło
Pierwotnie rozwiązanie polegało na zapewnieniu następującej konfiguracji, ponieważ destrukcja obiektów była kiedyś funkcją eksperymentalną i nie była domyślnie obsługiwana:
Od wersji 5 ta opcja jest przestarzała .
Teraz wystarczy tylko zadeklarować wersję ES, która jest wystarczająco nowa:
źródło
Jeśli masz zadanie przed zatwierdzeniem z bieganiem husky
eslint
, kontynuuj czytanie. Wypróbowałem większość odpowiedziparserOptions
iparser
wartości, w których mój rzeczywisty problem dotyczył wersji węzła, którego używałem.Moja aktualna wersja węzła to 12.0.0, ale husky w jakiś sposób używał mojej domyślnej wersji nvm (mimo że nie miałem
nvm
w moim systemie). Wydaje się, że jest to problem z samym husky . Więc:$HOME/.nvm
folder, który nie został usunięty, kiedy usuniętenvm
wcześniej.źródło
Tak dla przypomnienia , jeśli używasz eslint-plugin-vue , prawidłowe miejsce do dodania
'parser': 'babel-eslint'
to wewnątrzparserOptions
param.https://eslint.vuejs.org/user-guide/#faq
źródło