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

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

相关推荐
Pu_Nine_9几秒前
前端SSE(Server-Sent Events)实现详解:从原理到前端AI对话应用
前端·langchain·sse·ai对话
optimistic_chen10 分钟前
【Vue3入门】Pinia 状态管理 和 ElementPlus组件库
前端·javascript·vue.js·elementui·pinia·组件
酉鬼女又兒13 分钟前
零基础入门前端JavaScript 核心语法:var/let/const、箭头函数与 setTimeout 循环陷阱全解析(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·蓝桥杯
Bling_Bling_117 分钟前
【无标题】
前端·网络协议
We་ct18 分钟前
React Diff & Key 核心解析
开发语言·前端·javascript·react.js·前端框架·reactjs·diff
哥本哈士奇19 分钟前
Vue 3 快速入门:从零搭建前后端 CRUD 应用
前端·javascript·vue.js
biubiubiu070619 分钟前
Agent 是如何拥有“手脚”的(ReAct 运行流程)
开发语言·前端·javascript
摸鱼的春哥23 分钟前
Agent教程21:知识图谱🕸,让AI🤖学会联想
前端·javascript·后端
SuperEugene23 分钟前
Vue3 组件拆分实战规范:页面 / 业务 / 基础组件边界清晰化,高内聚低耦合落地指南|Vue 组件与模板规范篇
前端·javascript·vue.js·前端框架
泯泷23 分钟前
阶段二:为什么先设计指令集,编译器和运行时才能稳定对齐?
前端·javascript·架构