Dengan kode ini:
import React from 'react';
import { Link } from 'react-router';
import { View, NavBar } from 'amazeui-touch';
import * as Pages from '../components';
const { Home, ...Components } = Pages;
Saya mendapatkan kesalahan eslint ini:
7:16 error Parsing error: Unexpected token .. Why?
Inilah konfigurasi eslint saya:
{
"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
}],
}
}
.... .... Apa masalahnya?
javascript
reactjs
eslint
DongYao
sumber
sumber
Jawaban:
Kesalahan token tak terduga dalam penguraian ESLint terjadi karena ketidakcocokan antara lingkungan pengembangan Anda dan kemampuan penguraian ESLint saat ini dengan perubahan yang sedang berlangsung dengan JavaScripts ES6 ~ 7.
Menambahkan properti "parserOptions" ke .eslintrc Anda tidak lagi cukup untuk situasi tertentu, seperti menggunakan
di kelas ES6 karena ESLint saat ini tidak dapat menguraikannya sendiri. Situasi khusus ini akan menimbulkan kesalahan:
Solusinya adalah memiliki ESLint diurai oleh parser yang kompatibel. babel-eslint adalah paket yang menyelamatkan saya baru-baru ini setelah membaca halaman ini dan saya memutuskan untuk menambahkan ini sebagai solusi alternatif bagi siapa pun yang datang kemudian.
tambahkan saja:
ke
.eslintrc
file Anda dan jalankannpm install babel-eslint --save-dev
atauyarn add -D babel-eslint
.Harap perhatikan bahwa karena API Konteks baru mulai dari
React ^16.3
memiliki beberapa perubahan penting, silakan lihat panduan resmi .sumber
yarn add -D babel-eslint
untuk mereka yang menggunakan Benang."parser": "babel-eslint"
pernyataan config, ada di.eslintrc.json
. Dalam kasus saya, ini adalah file JSON, tetapi pada dasarnya, file .eslintrc Anda"parser": "babel-eslint"
ke file eslintrc saya tetapi mendapat beberapa kesalahan. Saya bekerja dengan reaksi dan memberi tahu saya bahwa komponen yang diimpor saya dipanggil tetapi tidak pernah digunakan. Mana yang aneh?ESLint 2.x secara eksperimental mendukung sintaks ObjectRestSpread, Anda dapat mengaktifkannya dengan menambahkan yang berikut ke
.eslintrc
: docs AndaESLint 1.x tidak secara alami mendukung operator penyebaran, salah satu cara untuk mengatasi ini adalah dengan menggunakan parser babel-eslint . Petunjuk instalasi dan penggunaan terbaru ada di readme proyek.
sumber
ecmaFeatures
telah ditinggalkan. GunakanecmaVersion
ecmaVersion: 2018
bekerja tanpa peringatan dengan ESLint 5"parser": "babel-eslint"
membantu saya memperbaiki masalah iniReferensi
sumber
Saya memecahkan masalah ini dengan Pertama, menginstal babel-eslint menggunakan npm
Kedua, tambahkan konfigurasi ini dalam file .eslintrc
sumber
Dalam kasus saya (saya menggunakan Firebase Cloud Functions) saya membuka
.eslintrc.json
dan mengubah:untuk:
sumber
Awalnya, solusinya adalah menyediakan konfigurasi berikut sebagai perusakan objek yang digunakan untuk fitur eksperimental dan tidak didukung secara default:
Sejak versi 5, opsi ini telah ditinggalkan .
Sekarang cukup dengan mendeklarasikan versi ES, yang cukup baru:
sumber
Jika Anda mendapat tugas pra-komitmen dengan husky running
eslint
, silakan lanjutkan membaca. Saya mencoba sebagian besar jawaban tentangparserOptions
danparser
nilai nilai di mana masalah saya yang sebenarnya adalah tentang versi node yang saya gunakan.Versi node saya saat ini adalah 12.0.0, tetapi husky entah bagaimana menggunakan versi nvm default saya (walaupun saya tidak punya
nvm
di sistem saya). Ini tampaknya menjadi masalah dengan husky itu sendiri. Begitu:$HOME/.nvm
folder yang tidak dihapus ketika saya hapusnvm
sebelumnya.sumber
Sebagai catatan, jika Anda menggunakan eslint-plugin-vue , tempat yang benar untuk ditambahkan
'parser': 'babel-eslint'
adalah di dalamparserOptions
param.https://eslint.vuejs.org/user-guide/#faq
sumber