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为了兼容旧的应用程序和系统默认的文件类型。就因为这个问题足足浪费了我好几个晚上的时间。不过这咱们也没办法呀,只能默默忍受了。

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

相关推荐
RadiumAg33 分钟前
记一道有趣的面试题
前端·javascript
yangzhi_emo37 分钟前
ES6笔记2
开发语言·前端·javascript
yanlele1 小时前
我用爬虫抓取了 25 年 5 月掘金热门面试文章
前端·javascript·面试
中微子2 小时前
React状态管理最佳实践
前端
烛阴2 小时前
void 0 的奥秘:解锁 JavaScript 中 undefined 的正确打开方式
前端·javascript
中微子2 小时前
JavaScript 事件与 React 合成事件完全指南:从入门到精通
前端
Hexene...2 小时前
【前端Vue】如何实现echarts图表根据父元素宽度自适应大小
前端·vue.js·echarts
天天扭码3 小时前
《很全面的前端面试题》——HTML篇
前端·面试·html
xw53 小时前
我犯了错,我于是为我的uni-app项目引入环境标志
前端·uni-app
!win !3 小时前
被老板怼后,我为uni-app项目引入环境标志
前端·小程序·uni-app