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

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

相关推荐
徐同保18 分钟前
React useRef 完全指南:在异步回调中访问最新的 props/state引言
前端·javascript·react.js
刘一说1 小时前
Vue 导航守卫未生效问题解析:为什么路由守卫不执行或逻辑失效?
前端·javascript·vue.js
一周七喜h1 小时前
在Vue3和TypeScripts中使用pinia
前端·javascript·vue.js
weixin_395448912 小时前
main.c_cursor_0202
前端·网络·算法
东东5162 小时前
基于vue的电商购物网站vue +ssm
java·前端·javascript·vue.js·毕业设计·毕设
MediaTea2 小时前
<span class=“js_title_inner“>Python:实例对象</span>
开发语言·前端·javascript·python·ecmascript
梦梦代码精3 小时前
开源、免费、可商用:BuildingAI一站式体验报告
开发语言·前端·数据结构·人工智能·后端·开源·知识图谱
0思必得03 小时前
[Web自动化] Selenium执行JavaScript语句
前端·javascript·爬虫·python·selenium·自动化
程序员敲代码吗3 小时前
MDN全面接入Deno兼容性数据:现代Web开发的“一张图”方案
前端
0思必得03 小时前
[Web自动化] Selenium截图
前端·爬虫·python·selenium·自动化