2017-06-13 50 views
12

Próbuję skonfigurować projekt React, który używa Webpack i ESLint z konfiguracją airbnb dla ESLint. Przy próbie uruchomienia projektu z serwerem WebPack dev, pojawia się następujący błąd:ESLint "Błąd instalacji modułu" z eslint-config-airbnb

"Module build failed: Error: /react-template/node_modules/eslint-config-airbnb/rules/react-a11y.js: ESLint configuration is invalid: - Unexpected top-level property "ecmaFeatures"."

ten korzysta eslint-config-Airbnb v 15.0.1.. Sprawdziłem plik react-a11y.js i potwierdziłem, że istnieje właściwość najwyższego poziomu "ecmaFeatures". Wiem, że od wersji ESLint 2.0.0 ecmaFeatures mają teraz być własnością parserOptions, ale nie jestem pewien, czy to dotyczy tylko pliku .eslintrc. Chciałbym użyć konfiguracji airbnb jeśli to możliwe, więc doceniam każdą pomoc. Oto mój plik .eslintrc w celach informacyjnych.

.eslintrc

{ 
    "parser": "babel-eslint", 
    "parserOptions": { 
    "ecmaVersion": 2016, 
    "sourceType": "module", 
    "ecmaFeatures": { 
     "jsx": true 
    } 
    }, 
    "env": { 
    "es6": true, 
    "browser": true, 
    "node": true, 
    "jest": true 
    }, 
    "extends": ["airbnb"] 
} 

Odpowiedz

20

I zdobione roztworu.

Musisz edytować react-a11y.js i react.js znajdujące się w ./node_modules/.bin/eslint-config-airbnb/rules/.

W react-a11y.js Usuń:

ecmaFeatures: { 
    jsx: true 
}, 

i zastąpić go:

parserOptions: { 
    ecmaFeatures: { 
    jsx: true, 
    }, 
}, 

W react.js prostu usunąć:

ecmaFeatures: { 
    jsx: true 
}, 

i powinno być dobrze iść.

Również patrzę teraz na repozytorium airbnb i wygląda na to, że naprawiono je prawie miesiąc temu, ale właśnie dzisiaj zainstalowałem ponownie eslint-config-airbnb, więc nie jestem pewien, co się tam stało.

Oto linki do react-a11y.js diff i react.js diff. Pokazują dokładnie to, czego potrzebujesz do dodania/usunięcia.

+0

Świetnie, tak, doszłam do wniosku, że może wymagać refaktoryzacji używać parserOptions. Dzięki! – darin

+0

Kopalnia myśli jako poprawna odpowiedź? – gucciferXCIV

0

Ty JSON jest nieprawidłowy. Brakuje cytatów wokół pierwszego "parsera";

{ 
    "parser": "babel-eslint", 
    "parserOptions": { 
    "ecmaVersion": 2016, 
    "sourceType": "module", 
    "ecmaFeatures": { 
    "jsx": true 
} 
}, 
    "env": { 
    "es6": true, 
    "browser": true, 
    "node": true, 
    "jest": true 
}, 
"extends": ["airbnb"] 
} 
+0

Tak, przepraszam, to był problem w kopii, którą zamieściłem tutaj w Stack Overflow, ale jest dobrze w pliku i problem nadal występuje: -/ – darin