How do I configure ESLint to allow fat arrow class methods

前端 未结 6 1365
北恋
北恋 2020-12-01 06:59

ESLint is throwing a Parsing error: Unexpected token = error when I try to lint my Es6 classes. What configuration parameter am I missing to enable fat arrow c

相关标签:
6条回答
  • 2020-12-01 07:32

    Your sample isn't valid ES6, so there's no way to configure eslint to allow it

    0 讨论(0)
  • 2020-12-01 07:33

    First install babel-eslint:

    npm i -D babel-eslint
    

    Then add the following to your .eslintrc.json file:

    "parser": "babel-eslint"
    
    0 讨论(0)
  • 2020-12-01 07:42

    First install these plugins:

    npm i -D babel-eslint eslint-plugin-babel

    Then add these settings to your eslint config file:

    .eslintrc.json

    {
        "plugins": [ "babel" ],
        "parser": "babel-eslint",
        "rules": {
            "no-invalid-this": 0,
            "babel/no-invalid-this": 1,
        }
    }
    

    This way you can use fat arrow class methods plus you will not get any no-invalid-this errors from eslint.

    Happy codin'

    0 讨论(0)
  • 2020-12-01 07:47

    If you want to use experimental features (such as arrows as class methods) you need to use babel-eslint as a parser. Default parser (Espree) doesn't support experimental features.

    0 讨论(0)
  • 2020-12-01 07:51

    From what I read in the error message Parsing error: Unexpected token = it looks like more a parser error than linter one.

    Assuming you are using Babel as your JavaScript compiler/transpiler and babel-eslint as your ESLint parser, chances are that it is Babel complaining about the syntax, not ESLint.

    The issue is not about the arrow functions but something more experimental (ES7??) that I think it is called property initializer or class instance field (or both :) ).

    If you want to use this new syntax/feature you need to enable preset-stage-1 in Babel. This preset includes the syntax-class-properties plugin that allows that syntax.

    Summing up:

    1. Install babel preset:

      npm install babel-preset-stage-1
      
    2. Add this preset to the list of your presets (I suppose you are already using es2015 and react presets), either in your .babelrc or in your babel-loader query field if you are using webpack.

      "presets": ["es2015", "stage-1", "react"]
      
    0 讨论(0)
  • 2020-12-01 07:51

    I came across the same problem today

    and @dreyescat 's answer works for me.

    By default, babel uses 3 presets: es2015, react, stage-2

    Screenshot with "Parsing error: Unexpected token ="

    Then if you also select the stage-1preset, the error is gone

    Screenshot with no error

    You can test it on the bebeljs.io site yourself

    0 讨论(0)
提交回复
热议问题