Vue2项目配置Prettier+husky+lint-staged失败的排查与解决
解决lint-staged报错“Failed to get staged files!”的问题
根据你提供的错误日志和配置,这个报错通常和Git命令执行异常、环境配置或仓库状态有关,以下是针对性的排查和解决步骤:
1. 检查Git暂存区状态
首先手动验证Git能否正常读取暂存文件:
- 在项目根目录执行命令:
git diff --name-only --staged- 如果该命令报错,说明Git暂存区存在异常,可尝试:
- 取消当前暂存:
git reset HEAD - 重新添加文件:
git add . - 若仍有问题,执行
git fsck --full检查并修复Git仓库损坏
- 取消当前暂存:
- 如果该命令报错,说明Git暂存区存在异常,可尝试:
2. 配置lint-staged的Shell选项(Windows环境适配)
日志显示Git的shell路径为/bin/sh,Windows下可能存在Shell环境不兼容的问题:
- 方法1:修改
package.json,指定lint-staged使用Git自带的bash:
{ "lint-staged": { "*.{js,vue,css,scss,json,md}": [ "prettier --write", "git add" ] }, "lint-staged:options": { "shell": "C:\\Program Files\\Git\\bin\\bash.exe" } }
- 方法2:直接在命令行指定shell运行:
npx lint-staged --shell "C:\\Program Files\\Git\\bin\\bash.exe"
3. 排查子模块问题
日志最后执行了子模块相关命令,若项目包含子模块且配置异常,也会触发该错误:
- 执行
git submodule status查看子模块状态- 若子模块未初始化:执行
git submodule update --init --recursive - 若不需要子模块,可在lint-staged配置中忽略:
- 若子模块未初始化:执行
{ "lint-staged": { "*.{js,vue,css,scss,json,md}": [ "prettier --write", "git add" ], "!**/.gitmodules": [], "!**/modules/**": [] } }
4. 版本兼容性调整
当前使用的lint-staged@15.2.11与Node.js v20.11.1可能存在兼容问题:
- 降级lint-staged到稳定版本:
npm uninstall lint-staged && npm install lint-staged@14.0.1
- 或升级到最新版本:
npm update lint-staged
5. 重新生成Husky钩子
若钩子脚本存在权限或配置异常,可重新生成:
npx husky add .husky/pre-commit "npx lint-staged"
内容的提问来源于stack exchange,提问作者Julian
相关产品推荐
相关产品推荐

