このコードで
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
}],
}
}
.... .... 何が問題なのでしょうか?
ESLintのパースで予期しないトークンエラーが発生するのは、開発環境とESLintの現在のパース能力との非互換性、およびJavaScript ES6~7で進行中の変更に起因しています。
.eslintrc に "parserOptions" プロパティを追加することは、以下のような特定の状況においてはもはや十分ではありません。
static contextTypes = { ... } /* react */
を ES6 のクラスで使うような場合、ESLint が自分自身でパースすることができないので、もはや十分ではありません。この特定の状況では、次のようなエラーが発生します。
error Parsing error: Unexpected token =
解決策はESLintを互換性のあるパーサーで解析させることです。babel-eslintはこのページを読んで最近私を救ってくれたパッケージで、私は後から来る人のためにこれを代替ソリューションとして追加することに決めました。
を追加するだけです。
"parser": "babel-eslint"
を .eslintrc
ファイルに追加し、npm install babel-eslint --save-dev
または yarn add -D babel-eslint
を実行するだけです。
なお、React ^16.3
から導入された 新しいContext API には重要な変更があるため、公式ガイドを参照してください。
ESLint 2.x は実験的に ObjectRestSpread 構文をサポートしています。.eslintrc
に以下を追加することで、この構文を有効にすることができます。ドキュメント
"parserOptions": {
"ecmaVersion": 6,
"ecmaFeatures": {
"experimentalObjectRestSpread": true
}
},
ESLint 1.x は spread 演算子をネイティブにサポートしていません。これを回避する一つの方法は babel-eslint parser を使うことです。最新のインストール方法と使用方法はプロジェクトのreadmeにあります。
"parser": "babel-eslint"
が問題を解決してくれるのを助けました。
{
"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"
}
}
}
ハスキーが「エスリント」を実行するという事前コミットタスクがある場合は、引き続き読んでください。 「parserOptions」と「parser」の値に関するほとんどの回答を試しましたが、実際の問題は、使用していたノードバージョンに関するものでした。
現在のノードバージョンは12.0.0でしたが、huskyはどういうわけか私のnvmデフォルトバージョンを使用していました(システムに「nvm」がなかったとしても)。 これはハスキーの問題自体のようです。 そう:
1。 $ HOME / .nvm
フォルダーを削除しました以前に nvm
を削除したときに削除されませんでした。
2。 検証済みのノードは最新であり、適切なパーサーオプションを実行しました。
3。 動作し始めました。!