2016-03-15 35 views
14

Z tym kodem:błąd ESLint analizowaniem: Nieoczekiwany token

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 eslint config:

{ 
    "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 
    }], 
    } 
} 

.... .... W czym problem?

+0

można zamieścić swoje eslint config? – azium

+0

dziękuje Mam już upload ~ – DongYao

+2

Musisz użyć parsera, który obsługuje propozycję właściwości spreadu obiektu. –

Odpowiedz

16

ESLint 2.x eksperymentalnie obsługuje składni ObjectRestSpread, można włączyć ją poprzez dodanie następujących do .eslintrc: docs

"parserOptions": { 
    "ecmaVersion": 6, 
    "ecmaFeatures": { 
    "experimentalObjectRestSpread": true 
    } 
}, 

ESLint 1.x nie natywnie obsługuje operator spread, jeden sposób, aby uzyskać wokół tego używa się babel-eslint parser. Najnowsze instrukcje instalacji i użytkowania znajdują się w pliku readme projektu.

+2

To nie prawda. Domyślny parser ESLinta Espree obsługuje rozprzestrzenianie, a nawet rozprzestrzenianie się obiektów (jest to jedyna funkcja eksperymentalna obsługiwana przez espree). Aby uzyskać więcej informacji, zobacz: http://eslint.org/docs/user-guide/configuring#specifying-parser-options –

+0

Masz rację, moja oryginalna odpowiedź dotyczy tylko ESLint 1.x, zaktualizowałem ją o informacje dla 2.x –

8

Nieoczekiwany błąd tokenu w analizie ESLint wynika z niekompatybilności między środowiskiem programistycznym a aktualnymi możliwościami analizowania ESLint z bieżącymi zmianami za pomocą skryptów JavaScript ES6 ~ 7.

Dodanie „parserOptions” własności do swojego .eslintrc już nie wystarcza dla szczególnych sytuacjach, takich jak korzystanie

static contextTypes = { ... } /* react */ 

w klasach ES6 jak ESLint jest obecnie w stanie przetworzyć go na własną rękę. W tej konkretnej sytuacji wystąpi błąd:

error Parsing error: Unexpected token = 

Rozwiązaniem jest przekonwertowanie pliku ESLint przez zgodny analizator składni. babel-eslint to pakiet, który uratował mnie niedawno po przeczytaniu tej strony i postanowiłem dodać to jako alternatywne rozwiązanie dla każdego, kto przyjdzie później.

tylko dodać:

"parser": "babel-eslint" 

do pliku .eslintrc i uruchomić npm install babel-eslint --save-dev.

-1

"parser": "babel-eslint" jest OK dla mnie!

reading more : https://github.com/gildata/Roles/issues/6

{ 
 
    "parser": "babel-eslint", 
 
    "parserOptions": { 
 
     "ecmaVersion": 6, 
 
     "sourceType": "module", 
 
     "ecmaFeatures": { 
 
      "jsx": true, 
 
      "modules": true, 
 
      "experimentalObjectRestSpread": true 
 
     } 
 
    }, 
 
    "plugins": [ 
 
     "react" 
 
    ], 
 
    "extends": ["eslint:recommended", "plugin:react/recommended"], 
 
    "rules": { 
 
     "comma-dangle": 0, 
 
     "react/jsx-uses-vars": 1, 
 
     "react/display-name": 1, 
 
     "no-unused-vars": "warn", 
 
     "no-console": 1, 
 
     "no-unexpected-multiline": "warn" 
 
    }, 
 
    "settings": { 
 
     "react": { 
 
      "pragma": "React", 
 
      "version": "15.6.1" 
 
     } 
 
    } 
 
}

+1

Ta odpowiedź nie dodaje nic do odpowiedzi @ JaysQubeXon. – cs01

Powiązane problemy