lint-staged 无法提交代码 this.options.fields ??= {};SyntaxError: Unexpected token '??=

项目重新安装依赖以后,突然无法重新提交代码了, 纳尼!!!!

基础环境

makefile 复制代码
node: 14.21.3
"lint-staged": "^13.2.2"

报错信息

shell 复制代码
 ******* pre-commit 钩子触发 **************
file:///D:/projects/carbon-credit/node_modules/listr2/dist/index.js:206
    this.options.fields ??= {};
                        ^^^                    
SyntaxError: Unexpected token '??='
at Loader.moduleStrategy (internal/modules/esm/translators.js:149:18)
husky - pre-commit hook exited with code 1 (error)

从报错结果分析, 是配置了 pre-commit 钩子,执行了什么动作, 然后提示,无法提交 commit 信息

.husky/pre-commit

bash 复制代码
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
echo ''
echo -e "\e[0;32m ******* pre-commit 钩子触发 **************\e[0m"
echo ''

npx --no-install lint-staged

这里执行了 lint-staged

分析过程

  1. 查看是哪个包依赖了 listr2, 不是直接从node_modules 里面搜搜, 看lock文件
  2. 之前是好的, 说明一定是因为某个环境的变化导致了这个问题的发生。

既然定位到了 lint-staged , 则猜测,是 lint-staged 依赖 listr2, 然后 listr2 包语法发生了变化,导致不兼容

查看 lint-staged 的 issue-1315 , 找到类似答案。 node 版本必须为 16 + 才行。

nvm 切换node 版本为 16.20.2

再次提交代码 git commit -m 'feat: 初始化项目'

可以了~

解决办法

  • 方式1: node 升级到16
  • 方式2: 公司业务环境限制,无法升级到node 16+的, 降级lint-staged 从 13.2.2 到 13.2.0
相关推荐
子兮曰5 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰5 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万5 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝5 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋5 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁5 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95275 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大5 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师5 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学5 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端