2016-03-15 17 views
14

С помощью этого кода:ESLint Синтаксической ошибка: Непредвиденная лексема

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

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

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

Я получаю эту ошибку eslint:

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

Вот мой 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 
    }], 
    } 
} 

.... .... В чем проблема?

+0

Вы можете оставить свой eslint конфиг? – azium

+0

спасибо Я уже загрузил ~ – DongYao

+2

Вам нужно использовать синтаксический анализатор, который поддерживает предложение свойства объекта. –

ответ

16

ESLint 2.x экспериментально поддерживает синтаксис ObjectRestSpread, вы можете включить его, добавив следующие строки в .eslintrc: docs

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

ESLint 1.x изначально не поддерживает оператор распространения, один из способов, чтобы получить вокруг этого используется babel-eslint parser. Последние инструкции по установке и использованию находятся в файле readme проекта.

+2

Это неправда. Анализатор по умолчанию ESLint Espree поддерживает разнесение и даже распространение остального объекта (это единственная экспериментальная функция, поддерживаемая espree). Для получения дополнительной информации см. Это: http://eslint.org/docs/user-guide/configuring#specifying-parser-options –

+0

Вы правы, мой оригинальный ответ применим только к ESLint 1.x, я обновил его с информацией для 2.x –

8

Неожиданные ошибки маркера в разрастании ESLint происходят из-за несовместимости среды разработки с текущими синтаксическими возможностями ESLint с текущими изменениями в JavaScripts ES6 ~ 7.

Добавление свойства «parserOptions» к вашему .eslintrc уже не достаточно для конкретных ситуаций, таких как использование

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

в классах ES6 в ESLint в настоящее время не в состоянии разобрать его на свой собственный. Эта конкретная ситуация сгенерирует ошибку:

error Parsing error: Unexpected token = 

Решение состоит в том, что ESLint разобран совместимый синтаксический анализатор. babel-eslint - это пакет, который спас меня недавно после прочтения этой страницы, и я решил добавить это как альтернативное решение для всех, кто придет позже.

просто добавить:

"parser": "babel-eslint" 

в файл .eslintrc и запустить npm install babel-eslint --save-dev.

-1

"parser": "babel-eslint" ОК для меня!

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

Этот ответ ничего не добавляет к ответу @ JaysQubeXon. – cs01

Смежные вопросы