解决 Prettier 3.0.0 中 prettier.resolveConfig.sync 未定义错误
当使用 Prettier 3.0.0 配合 ESLint 时,很多开发者会遭遇如下错误:
bash
TypeError: prettier.resolveConfig.sync is not a function
Occurred while linting *the first line of the first code directory*
Rule: "prettier/prettier"
该错误会导致代码格式化流程中断,给开发带来不便。本文将详细解析问题根源并提供多种解决方案。
问题原因分析
该错误的核心原因在于版本兼容性问题:
- Prettier 3.0.0+ 对 API 进行了重大调整,移除了
resolveConfig.sync
方法 - eslint-plugin-prettier@4.x 尚未适配新 API,仍在调用已被移除的函数
- 版本冲突出现在
eslint-plugin-prettier
和prettier
之间
典型案例
当项目中同时存在以下依赖版本时会发生此错误:
json
"eslint": "^8.42.0",
"eslint-plugin-prettier": "^4.2.1", // 不兼容版本
"prettier": "3.0.0" // 新版
解决方案
1. 升级 eslint-plugin-prettier(推荐)
这是官方推荐且最彻底的解决方案:
bash
# 使用 npm
npm install --save-dev eslint-plugin-prettier@^5.0.0
# 使用 yarn
yarn add -D eslint-plugin-prettier@^5.0.0
升级说明
eslint-plugin-prettier v5.0.0+ 完全兼容 Prettier 3.x 版本:
- 适配了 Prettier 的 API 变更
- 修复了
resolveConfig.sync
调用错误 - 官方更新日志
2. 降级 Prettier 版本(兼容性方案)
若暂无法升级插件,可降级 Prettier 至 2.x 版本:
bash
# 使用 npm
npm install --save-dev prettier@^2.8.8
# 使用 yarn
yarn add -D prettier@^2.8.8
注意事项
降级后需同时锁定依赖版本:
json
{
"eslint-plugin-prettier": "^4.0.0", // 保证 4.x
"prettier": "^2.8.8" // 保持 2.8.x
}
3. 验证 Prettier 是否安装
有用户反馈此错误实际由漏装 Prettier 导致:
bash
# 安装 Prettier 最新版
npm install --save-dev prettier
# 或使用 yarn
yarn add -D prettier
4. 检查相关工具兼容性
如使用 pretty-quick
等扩展工具,请检查其兼容性:
pretty-quick@v3.1.3
不兼容 Prettier 3.x (已知问题)- 建议迁移至活跃维护的
lint-staged
:bash配置示例:# 移除旧工具 npm uninstall pretty-quick # 安装新工具 npm install --save-dev lint-staged
json{ "lint-staged": { "*.{js,css,md}": "prettier --write" } }
附加处理步骤
无论选择哪种方案,执行以下操作可避免缓存干扰:
- 删除
node_modules
文件夹 - 清理包管理器锁文件 (
package-lock.json
或yarn.lock
) - 重新安装依赖:bash
npm install # 或 yarn install
- 重启 IDE(如 VSCode)
总结
方案 | 适用场景 | 优先级 |
---|---|---|
升级 eslint-plugin-prettier@5 | 新项目或可自由升级 | ★★★★★ |
降级 Prettier@2.8.x | 受限于旧有兼容性 | ★★★☆☆ |
确保 Prettier 安装 | 基础环境问题 | ★★☆☆☆ |
最佳实践建议
优先选择升级解决方案。Prettier 3.x 在性能和功能上有显著改进,配合最新的 eslint-plugin-prettier@5+
使用最佳化工作流。
如需进一步排查问题,可直接参考官方 GitHub Issue:兼容性问题跟踪。