NodeJS搭配Husky、lint-staged、eslint出现ERR_REQUIRE_ESM错误求助
问题根因
这个错误本质不是ESLint检索node_modules导致的,是项目依赖的supports-color包9.x及以上版本为纯ESM模块,无法在你当前CommonJS规范的husky钩子脚本中被require()引入,不同设备复现情况不同是因为依赖版本没有被锁死,部分设备安装到了8.x的兼容版本。
解决步骤
- 锁定兼容版本的supports-color
执行以下命令安装8.x版本的supports-color,该版本支持CommonJS规范:
yarn add -D supports-color@8
- 清理冗余的git钩子文件
报错触发自commit-msg钩子,但你配置的husky仅声明了pre-commit钩子,说明本地.git/hooks目录下存在冗余的旧钩子文件,直接删除该文件即可:
rm .git/hooks/commit-msg
如果还有其他异常钩子,可以删除.git/hooks下所有自动生成的钩子文件后,重新执行husky安装命令生成对应钩子:
yarn husky install
- 修正lint-staged配置错误
你当前的lint-staged配置文件名有误,正确名称应为.lintstagedrc.json,而非.lintstagedrd.json,同时将配置内容中的eslint执行命令简化,避免多余的全量扫描:
{ "*.ts": [ "eslint --fix", "git add" ] }
- 确认忽略配置生效
检查你的.eslintignore文件,确保已包含以下配置:
node_modules/ dist/ .git/
内容的提问来源于stack exchange,提问作者kamoraes
相关产品推荐
相关产品推荐

