如何解决 Vue SFC 中的“解析错误:此实验性语法需要启用以下解析器插件之一:‘jsx、flow、typescript’”

Chr*_*bel 9 eslint babeljs

我在 Vue SFC 模板内使用 eslint 时遇到了这个奇怪的错误。

Parsing error: This experimental syntax requires enabling one of the following parser plugin(s): 'jsx, flow, typescript' (1:0)(这似乎是在 Vue SFC 标签的开始标签上<template>。)

这是 Vue SFC(字面意思是库存 ViteApp.vue文件)

<template>
  <img
    alt="Vue logo"
    src="./assets/logo.png"
  >
  <HelloWorld
    msg="Hello Vue 3 + Vite"
  />
</template>
Run Code Online (Sandbox Code Playgroud)

这是我的.eslintrc文件

module.exports = {
  env: {
    browser: true,
    es2021: true,
  },
  extends: [
    'plugin:vue/essential',
    'airbnb-base',
  ],
  parser: '@babel/eslint-parser',
  parserOptions: {
    ecmaVersion: 12,
    requireConfigFile: false,
    sourceType: 'module',
  },
  plugins: [
    'vue',
  ],
  rules: {
    'import/no-extraneous-dependencies': ['error', { devDependencies: true }],
    'vue/no-multiple-template-root': 'off',
  },
};
Run Code Online (Sandbox Code Playgroud)

package.json如果相关的话我的

{
  "version": "0.0.0",
  "scripts": {
    "build": "vite build",
    "dev": "vite",
    "lint": "eslint **/*.{js,vue}",
    "serve": "vite preview"
  },
  "dependencies": {
    "ky": "^0.28.5",
    "vue": "^3.0.5"
  },
  "devDependencies": {
    "@babel/core": "^7.15.0",
    "@babel/eslint-parser": "^7.15.0",
    "@vitejs/plugin-vue": "^1.2.3",
    "@vue/compiler-sfc": "^3.0.5",
    "eslint": "^7.32.0",
    "eslint-config-airbnb-base": "^14.2.1",
    "eslint-plugin-import": "^2.24.2",
    "eslint-plugin-vue": "^7.17.0",
    "jest": "^27.1.0",
    "vite": "^2.3.7"
  }
}
Run Code Online (Sandbox Code Playgroud)

我不太确定什么会导致这个问题,因为我有

  extends: [
    'plugin:vue/essential',
    'airbnb-base',
  ],
Run Code Online (Sandbox Code Playgroud)

  plugins: [
    'vue',
  ],
Run Code Online (Sandbox Code Playgroud)

之内.eslintrc

我想知道如何解决这个问题,但我也想了解这里发生了什么导致抛出此错误。

Chr*_*bel 27

该问题是由此引起的.eslintrc

  parser: '@babel/eslint-parser',
  parserOptions: {
    ecmaVersion: 12,
    requireConfigFile: false,
    sourceType: 'module',
  },
Run Code Online (Sandbox Code Playgroud)

它应该是

  parserOptions: {
    ecmaVersion: 12,
    parser: '@babel/eslint-parser',
    requireConfigFile: false,
    sourceType: 'module',
  },
Run Code Online (Sandbox Code Playgroud)

https://eslint.org/docs/user-guide/configuring/language-options#specifying-parser-optionsparser中甚至没有提到该属性,因此此时它可能已经过时了。