Mit diesem Code:
import React from 'react';
import { Link } from 'react-router';
import { View, NavBar } from 'amazeui-touch';
import * as Pages from '../components';
const { Home, ...Components } = Pages;
Ich bekomme diesen Eslint-Fehler:
7:16 error Parsing error: Unexpected token .. Why?
Hier ist meine eslint Konfiguration:
{
"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
}],
}
}
.... .... Was ist das Problem?
javascript
reactjs
eslint
DongYao
quelle
quelle
Antworten:
Unerwartete Tokenfehler beim ESLint-Parsing treten aufgrund der Inkompatibilität zwischen Ihrer Entwicklungsumgebung und den aktuellen Parsing-Funktionen von ESLint mit den laufenden Änderungen mit JavaScripts ES6 ~ 7 auf.
Das Hinzufügen der Eigenschaft "parserOptions" zu Ihrer .eslintrc reicht für bestimmte Situationen, z. B. die Verwendung, nicht mehr aus
In ES6-Klassen kann ESLint es derzeit nicht selbst analysieren. Diese besondere Situation führt zu einem Fehler von:
Die Lösung besteht darin, ESLint von einem kompatiblen Parser analysieren zu lassen. babel-eslint ist ein Paket, das mich kürzlich nach dem Lesen dieser Seite gerettet hat, und ich habe beschlossen, dies als alternative Lösung für alle hinzuzufügen, die später kommen.
einfach hinzufügen:
zu Ihrer
.eslintrc
Datei und führen Sienpm install babel-eslint --save-dev
oderyarn add -D babel-eslint
.Bitte beachten Sie, dass die neue Kontext-API ab
React ^16.3
einige wichtige Änderungen enthält. Weitere Informationen finden Sie im offiziellen Handbuch .quelle
yarn add -D babel-eslint
für diejenigen, die Garn verwenden."parser": "babel-eslint"
config-Anweisung hinzufügen sollen , finden Sie sie in der.eslintrc.json
. In meinem Fall ist es eine JSON-Datei, aber im Grunde genommen Ihre .eslintrc-Datei"parser": "babel-eslint"
zu meiner eslintrc-Datei hinzugefügt , aber stattdessen mehrere Fehler erhalten. Ich arbeite mit reagieren und es sagt mir, dass meine importierten Komponenten aufgerufen, aber nie verwendet wurden. Welches ist seltsam.ESLint 2.x unterstützt experimentell die ObjectRestSpread-Syntax. Sie können sie aktivieren, indem Sie Folgendes zu Ihren Dokumenten hinzufügen
.eslintrc
: docsESLint 1.x unterstützt den Spread-Operator nicht nativ. Eine Möglichkeit, dies zu umgehen, ist die Verwendung des Babel-Eslint-Parsers . Die neuesten Installations- und Verwendungsanweisungen finden Sie in der Projekt-Readme-Datei.
quelle
ecmaFeatures
wurde veraltet. Verwenden SieecmaVersion
ecmaVersion: 2018
funktioniert ohne Vorwarnung mit ESLint 5"parser": "babel-eslint"
hat mir geholfen, das Problem zu behebenReferenz
quelle
Ich habe dieses Problem gelöst, indem ich zuerst babel-eslint mit npm installiert habe
Zweitens fügen Sie diese Konfiguration in die .eslintrc-Datei ein
quelle
In meinem Fall (ich verwende Firebase Cloud-Funktionen) habe ich geöffnet
.eslintrc.json
und geändert:zu:
quelle
Ursprünglich bestand die Lösung darin, die folgende Konfiguration bereitzustellen, da die Objektzerstörung eine experimentelle Funktion war und standardmäßig nicht unterstützt wurde:
Seit Version 5 ist diese Option veraltet .
Jetzt reicht es aus, nur eine Version von ES zu deklarieren, die neu genug ist:
quelle
Wenn Sie eine Pre-Commit-Aufgabe mit Husky haben
eslint
, lesen Sie bitte weiter. Ich habe die meisten AntwortenparserOptions
undparser
Werte ausprobiert , bei denen mein eigentliches Problem die von mir verwendete Knotenversion war.Meine aktuelle Knotenversion war 12.0.0, aber Husky verwendete irgendwie meine NVM-Standardversion (obwohl ich sie nicht
nvm
in meinem System hatte). Dies scheint ein Problem mit Husky selbst zu sein. So:$HOME/.nvm
Ordner , die nicht gelöscht wurde , als ich entferntnvm
früher.quelle
Nur zur Veranschaulichung : Wenn Sie eslint-plugin-vue verwenden , befindet sich der richtige Ort zum Hinzufügen
'parser': 'babel-eslint'
innerhalb vonparserOptions
param.https://eslint.vuejs.org/user-guide/#faq
quelle