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

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

相关推荐
xianxin_2 分钟前
CSS Outline(轮廓)
前端
moyu842 分钟前
遮罩层设计与实现指南
前端
timeweaver18 分钟前
深度解析 Nginx 前端 location 配置与优先级:你真的用对了吗?
前端·nginx·前端工程化
鲸落落丶19 分钟前
网络通信---Axios
前端
wwy_frontend20 分钟前
React性能优化实战:从卡顿到丝滑的8个技巧
前端·react.js
小高00735 分钟前
面试官:npm run build 到底干了什么?从 package.json 到 dist 的 7 步拆解
前端·javascript·vue.js
天选打工圣体36 分钟前
个人学习笔记总结(四)抽离elpis并发布npm包
前端
JayceM2 小时前
Vue中v-show与v-if的区别
前端·javascript·vue.js
HWL56792 小时前
“preinstall“: “npx only-allow pnpm“
运维·服务器·前端·javascript·vue.js
德育处主任2 小时前
p5.js 掌握圆锥体 cone
前端·数据可视化·canvas