配置Husky执行git commit时报Missing script: "test"错误如何解决
Husky pre-commit 钩子报Missing script: "test"错误解决
执行npx husky add .husky/pre-commit "npm test"时,会把npm test写入pre-commit钩子逻辑,提交代码时钩子会自动执行该命令,而npm执行npm test时必须读取package.json中scripts字段下定义的test脚本,当前项目未配置该脚本就会直接报错终止提交。使用--no-verify会跳过整个pre-commit钩子的所有逻辑,包括配置的npx lint-staged代码校验,属于临时绕过方案,不建议长期使用。
对应解决方案
根据实际需求二选一即可:
- 需要保留提交前执行测试的逻辑
打开项目根目录的package.json,在scripts节点下补充test脚本配置即可,如果暂时还没写测试用例,可以加--passWithNoTests参数避免无测试文件时报错,配置示例:
配置完成后重新提交代码,就会正常执行测试逻辑,测试通过后才会完成提交。{ "scripts": { "test": "jest --passWithNoTests" // 如果用vitest、mocha等其他测试框架,替换成对应执行命令即可 } } - 不需要提交前跑测试,只保留lint-staged校验
直接打开.husky/pre-commit文件,删除里面的npm test行,只保留需要执行的lint-staged命令即可,标准配置参考:
修改完保存文件,后续提交就会正常执行lint-staged的代码格式、语法校验,不会再报找不到test脚本的错误。#!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" npx lint-staged
注意事项
- 修改.husky目录下的钩子文件后,不需要重新执行husky install,保存后下次git操作就会生效
- 非紧急情况不要使用
--no-verify参数跳过钩子校验,避免不符合规范的代码被提交到仓库
内容的提问来源于stack exchange,提问作者Francis Akilimali
相关产品推荐
相关产品推荐

