HBuilderX编译UniApp代码报错:保存刷新触发ESLint-Vue TypeError求助
错误信息
[eslint-vue] 09:46:57.911 TypeError: Cannot read properties of undefined (reading 'indexOf')
[eslint-vue] 09:46:57.911 at resolveSettings (D:\Users\Administrator\Downloads\HBuilderX.3.95.2023102806\HBuilderX\plugins\eslint-js\out\extension.js:93:25)
[eslint-vue] 09:46:57.911 at validateAndFixDocument (D:\Users\Administrator\Downloads\HBuilderX.3.95.2023102806\HBuilderX\plugins\eslint-js\out\extension.js:156:17)
[eslint-vue] 09:46:57.912 at D:\Users\Administrator\Downloads\HBuilderX.3.95.2023102806\HBuilderX\plugins\eslint-js\out\extension.js:299:4
[eslint-vue] 09:46:57.912 at D:\Users\Administrator\Downloads\HBuilderX.3.95.2023102806\HBuilderX\plugins\plugin-manager\out.js:1:93745
[eslint-vue] 09:46:57.912 at D:\Users\Administrator\Downloads\HBuilderX.3.95.2023102806\HBuilderX\plugins\plugin-manager\out.js:1:356566
[eslint-vue] 09:46:57.912 at D:\Users\Administrator\Downloads\HBuilderX.3.95.2023102806\HBuilderX\plugins\plugin-manager\out.js:1:357640
[eslint-vue] 09:46:57.912 at Immediate._onImmediate (D:\Users\Administrator\Downloads\HBuilderX.3.95.2023102806\HBuilderX\plugins\plugin-manager\out.js:1:360025)
[eslint-vue] 09:46:57.912 at processImmediate (node:internal/timers:466:21)
解决方案
1. 临时禁用内置ESLint自动校验
打开HBuilderX,依次进入「工具」→「设置」→「插件配置」,找到eslint-js或eslint-vue插件:
- 取消勾选「保存时自动校验」选项;
- 若问题仍存在,直接禁用该插件,待后续版本修复后再启用。
2. 更新HBuilderX至最新版本
当前使用的HBuilderX 3.95版本存在ESLint插件的已知bug,前往官方渠道下载最新稳定版覆盖安装,新版本通常会修复此类插件兼容性问题。
3. 切换为项目本地ESLint
避免使用HBuilderX内置的ESLint,改用项目本地依赖:
- 在UniApp项目根目录执行命令安装依赖:
npm install eslint eslint-plugin-vue @babel/eslint-parser --save-dev
- 在项目根目录创建或完善
.eslintrc.js配置文件,示例配置:
module.exports = { root: true, env: { node: true, browser: true }, extends: [ 'plugin:vue/vue3-essential', 'eslint:recommended' ], parserOptions: { parser: '@babel/eslint-parser', requireConfigFile: false // 适配UniApp项目无需单独babel配置的场景 }, rules: { 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off' } }
- 回到HBuilderX设置,搜索「ESLint」,勾选「使用本地ESLint」,并指定项目
node_modules/eslint的路径。
4. 清理HBuilderX缓存
进入「工具」→「清理缓存」,选择清理「插件缓存」和「项目缓存」,清理完成后重启HBuilderX。
内容的提问来源于stack exchange,提问作者jay ash

