【问题标题】:ESLint: Parsing error: This experimental syntax requires enabling one of the following parser plugin(s): 'jsx, flow, typescript' (2:9)ESLint:解析错误:此实验性语法需要启用以下解析器插件之一:'jsx, flow, typescript' (2:9)
【发布时间】:2021-10-11 02:28:57
【问题描述】:

我正在尝试在 webstorm 中使用 eslint,但它不起作用并显示错误:ESLint: Parsing error: This Experimental syntax requires enable the following parser plugin(s): 'jsx, flow, typescript' (2:9)。 这是我的 .eslintrc 和 package.json 设置。我应该怎么做才能修复错误? 包.json

{
  "name": "raonair-frontend",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@testing-library/user-event": "^12.1.10",
    "eslint-config-react-app": "^6.0.0",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-router-dom": "^5.2.0",
    "react-scripts": "4.0.3",
    "web-vitals": "^1.0.1"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "prepare": "husky install"
  },
  "parser": "babel-eslint",
  "eslintConfig": {
    "extends": [
      "react-app",
      "airbnb",
      "plugin:flowtype/recommended"
    ],
    "plugins": [
      "flowtype"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@babel/eslint-parser": "^7.15.0",
    "@babel/eslint-plugin": "^7.14.5",
    "@babel/plugin-syntax-jsx": "^7.14.5",
    "eslint": "^7.32.0",
    "eslint-config-airbnb": "^18.2.1",
    "eslint-config-prettier": "^8.3.0",
    "eslint-plugin-flowtype": "^5.9.0",
    "eslint-plugin-import": "^2.23.4",
    "eslint-plugin-jsx-a11y": "^6.4.1",
    "eslint-plugin-react": "^7.24.0",
    "eslint-plugin-react-hooks": "^4.2.0",
    "husky": "^7.0.1",
    "prettier": "^2.3.2"
  }
}

.eslintrc

{
  "env": {
    "browser": true,
    "node": true
  },
  "extends": [
    "airbnb",
    "airbnb/hooks",
    "prettier"
  ],
  "parser": "@babel/eslint-parser",
  "parserOptions": {
    "sourceType": "module",
    "allowImportExportEveryWhere": false,
    "ecmaFeatures": {
      "globalReturn": false,
      "jsx": true
    },
    "ecmaVersion": 2020,
    "babelOptions": {
      "configFile": "./babel.config.js"
    }
  },
  "plugins": [
    "jsx-a11y",
    "react-hooks",
    "@babel/",
    "flowtype",
    "import"
  ],
  "rules": {
    "import/no-anonymous-default-export": "off",
    "import/no-extraneous-dependencies": "off",
    "import/order": [
      "error",
      {
        "groups": [
          "builtin",
          "external",
          "internal",
          "parent",
          "sibling"
        ],
        "newlines-between": "always",
        "alphabetize": {
          "order": "asc",
          "caseInsensitive": false
        }
      }
    ],
    "import/prefer-default-export": "off",
    "indent": [
      "error",
      2,
      {
        "SwitchCase": 1
      }
    ],
    "jsx-a11y/anchor-is-valid": "off",
    "no-console": "error",
    "no-unused-vars": "error",
    "react/jsx-props-no-spreading": "off",
    "react/react-in-jsx-scope": "off"
  },
  "settings": {
    "import/resolver": {
      "typescript": {}
    },
    "insert_final_newline": true
  }
}


【问题讨论】:

    标签: eslint eslintrc eslint-config-airbnb prettier-eslint babel-eslint


    【解决方案1】:

    扩展 Ceroy 的回答 (source):

    1. 安装启用 babel 正确解析 jsx 所需的依赖项

    yarn add @babel/preset-react -D

    npm install --save-dev @babel/preset-react

    1. 配置 Babel

    项目根目录下的.babel.rc文件:

    {
        "presets": [
            "@babel/preset-react"
        ]
    }
    
    1. .eslintrc.json 中指定解析器(这样您的控制台和 VSCode 将使用相同的解析器)- 此处显示完整的 eslintrc:
    {
        "parser": "@babel/eslint-parser",
        "settings": {
            "react": {
                "version": "detect"
            }
        },
        "env": {
            "browser": true,
            "es2021": true
        },
        "extends": [
            "plugin:react/recommended",
            "standard",
            "plugin:react/jsx-runtime",
            "plugin:testing-library/react",
            "plugin:jest/all"
        ],
        "parserOptions": {
            "sourceType": "module"
        },
        "rules": {}
    }
    

    注意:.eslintrc.json 也可以通过 eslint --init 或使用 VSCode 中的 ESLint 扩展来创建。 init 会给你更多的选择(比如 TypeScript 支持)

    1. 在控制台中试用:npx eslint --fix .

    2. 检查 VSCode(带有 ESLint 扩展)

    奖金:

    VSCode 的 ESLint 插件设置(保存时自动修复、Jest 感知、babel 解析器等 - 在全局 VSCode settings.json 中):

        ...
        "eslint.alwaysShowStatus": true,
        "eslint.format.enable": true,
        "eslint.lintTask.enable": true,
        "eslint.options": {
            "parser": "@babel/eslint-parser"
        },
        "editor.codeActionsOnSave": {
            "source.fixAll.eslint": true
        },
        "eslint.validate": [
            "javascript"
        ]
        ...
    

    完整的package.json:

    {
      "name": "okta-test",
      "version": "0.1.0",
      "private": true,
      "dependencies": {
        "@testing-library/jest-dom": "^5.11.4",
        "@testing-library/react": "^12.1.0",
        "@testing-library/user-event": "^13.2.1",
        "react": "^17.0.2",
        "react-dom": "^17.0.2",
        "react-router": "^5.2.1",
        "react-router-dom": "^5.3.0",
        "react-scripts": "4.0.3",
        "web-vitals": "^2.1.0"
      },
      "scripts": {
        "start": "react-scripts start",
        "build": "react-scripts build",
        "test": "react-scripts test",
        "eject": "react-scripts eject"
      },
      "eslintConfig": {
        "extends": [
          "react-app",
          "react-app/jest"
        ]
      },
      "browserslist": {
        "production": [
          ">0.2%",
          "not dead",
          "not op_mini all"
        ],
        "development": [
          "last 1 chrome version",
          "last 1 firefox version",
          "last 1 safari version"
        ]
      },
      "devDependencies": {
        "@babel/eslint-parser": "^7.15.7",
        "@babel/preset-react": "^7.14.5",
        "eslint": "^7.32.0",
        "eslint-config-standard": "^16.0.3",
        "eslint-plugin-babel": "^5.3.1",
        "eslint-plugin-import": "^2.24.2",
        "eslint-plugin-jsx": "^0.1.0",
        "eslint-plugin-node": "^11.1.0",
        "eslint-plugin-promise": "^5.1.0",
        "eslint-plugin-react": "^7.26.0"
      }
    }
    

    【讨论】:

      【解决方案2】:
      1. 在开发依赖中安装@babel-preset-react。

      2. 在 .eslintrc 文件中添加这个

        ... "解析器": "@babel/eslint-parser", “解析器选项”:{ ... "babelOptions": { “预设”:[“@babel/preset-react”] }, } ...

      来源:https://ffan0811.medium.com/error-debugging-this-experimental-syntax-requires-enabling-one-of-the-following-parser-plugin-s-22946599a0a4

      【讨论】:

        猜你喜欢
        • 2021-06-01
        • 1970-01-01
        • 2018-09-17
        • 1970-01-01
        • 1970-01-01
        • 2019-05-09
        • 2019-05-02
        • 2021-03-24
        • 2020-11-07
        相关资源
        最近更新 更多