异常现象
项目中拉取了soybean-admin的代码后,通过pnpm install
命令安装依赖库,随后通过git提交代码时出现以下报错:
$ git commit -m "init: 初始化前端仓库,基于SoybeanAdmin"
ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND No package.json (or package.yaml, or package.json5) was found in "C:\Users\xxxx".
对比另一项目,该项目同样使用pnpm管理,却未出现此问题,因此可确认与pnpm环境无关,应当是依赖引入的问题。
原因分析
经确认,此问题由Git hook产生,即安装依赖的过程中,某个环节配置了git hook,该hook中配置了基于pnpm的校验机制,导致了此异常产生。
导致异常的git hook出现在前端代码的package.json
中,如下所示:
在package.json中存在此git hook配置时,运行pnpm install
命令时将会配置对应的git hook操作
而我的前端代码并非项目的根目录,因此执行hook命令时出现上述报错,其本质原因为:hook命令执行的路径不正确 。
解决方案
- 临时方案:在git提交命令中增加参数
--no-verify
,例如git commit --no-verify -m "xxxxxx"
,此选项将忽略hook命令的执行,直接完成提交; - 长期方案:修改package.json中相关hook配置,使其能够正常通过,如下所示:
修改后验证可以成功完成提交。