You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESLint报Parsing error: Unexpected token with错误,如何在保留ESLint与Prettier双规则校验的前提下解决该问题?

ESLint报Parsing error: Unexpected token with错误,如何在保留ESLint与Prettier双规则校验的前提下解决该问题?

我来帮你梳理下这个问题的根源,再一步步帮你解决它:

问题根源

你遇到的Parsing error: Unexpected token with错误,核心原因是当前ESLint使用的默认解析器(Espree)还不能正确识别最新的import...with断言语法。你虽然已经安装了Babel相关的语法插件,但并没有让ESLint用上Babel解析器来处理这个语法。至于去掉eslintPluginPrettier后错误消失,是因为插件的默认配置和当前解析器设置产生了冲突,但这显然不是长久之计——毕竟我们需要同时保留ESLint的代码规则校验和Prettier的格式校验。

具体解决步骤

我们的目标是让ESLint通过Babel解析器识别import断言语法,同时保留Prettier的集成,具体操作如下:

1. 在ESLint配置中指定使用Babel解析器

打开你的eslint.config.js,在自定义配置的languageOptions中添加解析器配置,让ESLint使用@babel/eslint-parser来处理代码:

import pluginJs from '@eslint/js';
import eslintPluginPrettier from 'eslint-plugin-prettier/recommended';
import globals from 'globals';

/** @type {import('eslint').Linter.Config[]} */
export default [
  {
    languageOptions: {
      // 新增:指定Babel作为ESLint解析器
      parser: '@babel/eslint-parser',
      parserOptions: {
        // 配置Babel选项,启用import断言语法插件
        requireConfigFile: false, // 如果你有单独的Babel配置文件(如.babelrc),可以设为true或指定路径
        babelOptions: {
          plugins: ['@babel/plugin-syntax-import-assertions'],
        },
      },
      globals: {
        ...globals.browser,
        ...globals.jest
      },
      ecmaVersion: 2024,
      sourceType: 'module'
    },
    rules: {
      // 你的自定义规则
    }
  },
  pluginJs.configs.recommended,
  eslintPluginPrettier // 保留这个,确保Prettier通过ESLint运行
];

2. (可选)配置Babel全局配置(如果使用单独的Babel文件)

如果你习惯用单独的.babelrc或babel.config.js来管理Babel配置,可以在其中添加语法插件,这样就不用在ESLint配置里重复写了:

// .babelrc
{
  "plugins": ["@babel/plugin-syntax-import-assertions"]
}

这时,你可以把ESLint配置里的parserOptions.babelOptions去掉,只保留parser: '@babel/eslint-parser'即可。

3. 验证配置是否生效

  • 先重启VS Code的ESLint服务(可以按Ctrl+Shift+P,输入ESLint: Restart ESLint Server)
  • 打开有问题的JS文件,查看Parsing error是否消失
  • 故意写一个不符合Prettier格式的代码(比如多打几个连续空格),检查ESLint是否会报Prettier相关的错误——如果有,说明Prettier仍然在lint时正常运行

额外注意点

  • 你使用的Prettier 3.4.2版本已经支持import...with断言语法,所以不需要额外配置Prettier
  • 确保@babel/eslint-parser和你的ESLint版本(9.18.0)兼容,你当前的版本组合是完全没问题的

这样操作后,既能解决ESLint的解析错误,又能同时保留ESLint的代码规则校验和Prettier的格式校验啦。

备注:内容来源于stack exchange,提问作者srbrills

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 14:33:09