Nuxt 2.15.7 ESLint解析错误: 加载ES Module需使用import的解决方案问询
解决方案(均无需调整Babel编译配置)
错误根因
你遇到的报错本质是已停止维护的babel-eslint解析器仅支持CommonJS格式的ESLint依赖,而项目中安装的ESLint版本过高,其依赖的eslint-scope@8.x默认采用ESM格式导出,导致CommonJS的require()调用失败。
优先推荐方案:固定eslint-scope版本(风险最低,零配置修改)
该方案仅锁定依赖版本,完全不碰现有业务、ESLint、Babel配置,适合团队限制修改配置的场景:
- 按照你使用的包管理工具,在项目
package.json中新增对应字段:- 如果你用npm >=8.3.0,新增
overrides字段:
{ "overrides": { "eslint-scope": "^7.2.2" } }- 如果你用yarn,新增
resolutions字段:
{ "resolutions": { "eslint-scope": "^7.2.2" } } - 如果你用npm >=8.3.0,新增
- 删除项目下的
node_modules文件夹,以及对应的锁文件package-lock.json(npm)或yarn.lock(yarn) - 重新执行依赖安装命令
- 重启VS Code即可,报错会直接消失
备选方案1:降级ESLint到7.x版本
ESLint 7.x版本依赖的eslint-scope为CommonJS格式,和babel-eslint天然兼容,同样不需要修改Babel配置:
- 执行命令卸载现有ESLint:
npm uninstall eslint或yarn remove eslint - 安装7.x版本的ESLint:
npm install eslint@7.32.0 --save-dev或yarn add eslint@7.32.0 --dev - 重装依赖后重启VS Code即可
备选方案2:替换ESLint解析器(仅修改ESLint配置,不碰Babel编译配置)
如果允许修改ESLint配置,可以用Babel官方替代babel-eslint的@babel/eslint-parser,不需要修改Babel的编译规则:
- 先把你之前改成ES6模块格式的
eslintrc.js改回原来的CommonJS格式(用module.exports导出) - 执行命令卸载旧解析器:
npm uninstall babel-eslint - 安装新解析器:
npm install @babel/eslint-parser@7.17.0 --save-dev - 修改
eslintrc.js中的parser配置:
parserOptions: { parser: '@babel/eslint-parser', requireConfigFile: false }
- 重启VS Code即可
内容的提问来源于stack exchange,提问作者Danny Venn
相关产品推荐
相关产品推荐

