2016-03-15 23 views
14

Con questo codice:errore di parsing ESLint: token imprevisto

import React from 'react'; 
import { Link } from 'react-router'; 
import { View, NavBar } from 'amazeui-touch'; 

import * as Pages from '../components'; 

const { Home, ...Components } = Pages; 

ottengo questo errore eslint:

7:16 error Parsing error: Unexpected token .. Why? 

Ecco il mio 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 
    }], 
    } 
} 

.... .... Qual è il problema?

+0

è possibile pubblicare il tuo config eslint? – azium

+0

grazie Ho già caricato ~ – DongYao

+2

È necessario utilizzare un parser che supporti la proposta di proprietà di diffusione dell'oggetto. –

risposta

16

ESLint 2.x supporta sperimentalmente sintassi ObjectRestSpread, è possibile attivare aggiungendo quanto segue al .eslintrc: docs

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

ESLint 1.x non supporta nativamente l'operatore diffusione, un modo per ottenere attorno a questo sta usando il babel-eslint parser. Le ultime istruzioni di installazione e utilizzo si trovano nel file readme del progetto.

+2

Non è vero. Il parser predefinito di ESLint Espree supporta lo spread e anche il resto dell'oggetto distribuito (questa è l'unica funzionalità sperimentale supportata da espree). Per ulteriori informazioni, vedere questo: http://eslint.org/docs/user-guide/configuring#specifying-parser-options –

+0

Hai ragione, la mia risposta originale si applicava solo a ESLint 1.x, l'ho aggiornato con le informazioni per 2.x –

8

Gli errori di token inaspettati nell'analisi di ESLint si verificano a causa dell'incompatibilità tra l'ambiente di sviluppo e le funzionalità di analisi correnti di ESLint con le modifiche in corso con JavaScripts ES6 ~ 7.

L'aggiunta del "parserOptions" proprietà alla .eslintrc non è più sufficiente per le situazioni particolari, come l'utilizzo di

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

nelle classi ES6 come ESLint è attualmente in grado di analizzarlo da solo. Questa particolare situazione genera un errore di:

error Parsing error: Unexpected token = 

La soluzione è quella di aver ESLint analizzato da un parser compatibili. babel-eslint è un pacchetto che mi ha salvato di recente dopo aver letto questa pagina e ho deciso di aggiungerlo come soluzione alternativa per chi viene dopo.

Basta aggiungere:

"parser": "babel-eslint" 

al file .eslintrc ed eseguire npm install babel-eslint --save-dev.

-1

"parser": "babel-eslint" è OK per me!

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

Questa risposta non aggiunge nulla alla risposta di @JaysQubeXon. – cs01

Problemi correlati