ESLint 分析错误:令牌意外

2022-08-30 00:17:51

使用此代码:

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
    }],
  }
}

.... ....怎么了?


答案 1

ESLint 解析中发生意外的令牌错误是由于您的开发环境与 ESLint 当前的解析功能与 JavaScripts ES6~7 的持续更改不兼容。

将“parserOptions”属性添加到 .eslintrc 中已不足以用于特定情况,例如使用

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

在ES6类中,因为ESLint目前无法自行解析它。此特定情况将引发以下错误:

error Parsing error: Unexpected token =

解决方案是让 ESLint 由兼容的解析器解析,即 @babel/eslint-parser 或 babel-eslint 用于 v7 以下的 babel 版本。

只需添加:

"parser": "@babel/eslint-parser"

添加到您的文件并运行 或 ..eslintrcnpm install @babel/eslint-parser --save-devyarn add -D @babel/eslint-parser

请注意,由于新的上下文 API 从开始有一些重要的更改,请参阅官方指南React ^16.3


答案 2

ESLint 2.x 实验性地支持 ObjectRestSpread 语法,您可以通过将以下内容添加到您的 : docs 中来启用它.eslintrc

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

ESLint 1.x本身不支持传播运算符,解决这个问题的一种方法是使用babel-eslint解析器。最新的安装和使用说明位于项目自述文件中。