commitlint + husky提示.husky/commit-msg: .husky/commit-msg: cannot execute binary

前言

在另一个专栏中有一个搭建从0搭建后台管理系统中,我使用husky+lint-staged+eslint+prettier实现了在项目提交前对代码进行问题修复和格式化,本来想着整理一下,再发一篇文章的,后来一想为啥不把git提交的校验也加一下然后升级一下husky的版本。结果,嘿嘿 ,噩梦开始了。

添加之前看了官方文档,一看就几行命令,心中顿时一喜。哎哟,简简单单(蜜汁自信),三下五除二就把命令执行完了,结果在测试的时候问题出现了,如下图,它给我整个这。

依赖项

  • windows 11
  • husky v9
  • @commitlint/cli: ^18.6.0
  • @commitlint/config-conventional: ^18.6.0

Release v9.0.1 · typicode/husky (github.com)

commitlint官方文档

问题

问题解决

我一想小问题,百度一下吧毕竟咱们要学会站在巨人的肩膀上看世界。然后发现百度搜出来的东西不能说毫无用处吧,最起码让我知道了,凡事还得靠自己

然后怎么办呢,只好去代码库去找issues,发现还真有,可惜没有解决方案。本来还以为是自己的命令出了问题,又重新尝试了几遍,结果依旧。没办法了,只能自己鼓捣了。

解决问题的起点

echo "npx --no -- commitlint --edit $1" > .husky/commit-msg 就是这行命令让我有了灵感,因为在这行命令执行后,生成的文件总是只有 npx --no -- commitlint --edit,我就在想会不会是因为文件有问题,就没有使用命令行去生成。而是手动去创建了commit-msg文件。然后莫名奇妙成功了。。。

这种情况咱也是第一次见呀! 怎么办,把文件拷出来比较呗。

结果发现使用echo创建的文件的编码是UTF-16LE的,但是手动创建的文件的编码是UTF-8,这机会不就来了吗,赶紧再试了一遍。

修改编码前

修改编码后

完美收官

总结

为什么windows下 echo创建文件会是UTF-16LE,这个问题我也是问了GPT(毕竟它收集的资料比较全),它说是因为windows为了兼容旧的应用程序和系统默认的文件类型。就因为这个问题足足浪费了我好几个晚上的时间。不过这咱们也没办法呀,只能默默忍受了。

注:可能解决方案不对(欢迎指出错误),不过我是这样解决的。记录一下,就这些完活!!!

相关推荐
Nymph_Zhu32 分钟前
pdf转换markdown预览及内容互相点击定位
前端·pdf·vue3·markdown·element-plus
计算机魔术师37 分钟前
Google 一天蒸发5000亿,Reddit 靠 AI 训练喂得饱自己却饿死
前端
小大宇43 分钟前
Vue知识点-ElementPlus-05 输入框
前端·javascript·vue.js
l1m0_1 小时前
AI设计工具有哪些?Paico、Pixso AI、墨刀AI、Lovable、Codex怎么选
前端·人工智能·ai·设计·墨刀·codex·pixso
web打印社区1 小时前
Lodop在Edge和双核浏览器-先分清内核
前端·javascript·edge·pdf·ecmascript·html5
西瓜拿铁好喝1 小时前
开源和闭源 AI 办公工具,分别适合谁
java·前端·数据库
IT_陈寒1 小时前
深入理解SpringBoot:核心原理与最佳实践
前端·人工智能·后端
风骏时光牛马2 小时前
大模型综合能力多维评测:性能、逻辑与落地表现对比
前端
liuchangng2 小时前
React 19 + Vite 6 实战:从教材 PDF 到 866 词间隔重复单词 App
前端·react.js·pdf·vite·开源项目
Dwzun2 小时前
基于SpringBoot3+Vue3的油莎豆种植管理系统
java·前端·vue.js·spring boot·后端·python·计算机网络