Prettier 3.0.0 TypeError: prettier.resolveConfig.sync is not a function

回答 5 浏览 1.5万 2023-07-06

我运行此命令后触发了错误:

npx eslint "the code directory"

这是错误的前几行

TypeError: prettier.resolveConfig.sync is not a function
Occurred while linting *the first line of the first code directory*  
Rule: "prettier/prettier"
    at Program (*the main directory*\node_modules\eslint-plugin-prettier\eslint-plugin-prettier.js:138:40)

这些是 eslint、prettier 和来自 package.json 的其他配置

"eslint": "^8.42.0",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-cypress": "^2.13.3",
"eslint-plugin-prettier": "^4.2.1",
"prettier": "3.0.0",
"prettier-eslint": "^15.0.1"

我尝试从 node_modules 中删除文件并运行“npm i”,然后重新启动 IDE(使用 VS Code),它仍然发生。

Stephen Senjaya 提问于2023-07-06
随着 Prettier v3 的发布,resolveConfig 功能被删除: github.com/prettier/prettier/pull/ 12788 - 这是一个重大更改,因此依赖此功能的工具也需要升级。解决方法:降级到 Prettier v2。Benny Code 2023-07-24
5 个回答
#1楼 已采纳
得票数 108

prettier 3 和eslint-plugin-prettier 4 之间不兼容。

您可以使用 eslint-plugin-prettier 版本 5 来修复此问题:

yarn add -D eslint-plugin-prettier@5.0.0

或者

npm install --save-dev eslint-plugin-prettier@5.0.0
Josef Reichardt 提问于2023-07-06
j0k 修改于2023-07-12
它有效,谢谢Stephen Senjaya 2023-07-06
使用 eslint-plugin-prettier alpha 和 prettier ^3.0.0 会破坏 prettier 的格式化功能。如果我们在“Format document with...”部分看到,列出了很多 ESLint。 Option + Shift + F 也不起作用。恢复到 eslint-plugin-prettier ^4.2.1 和 prettier ^2.8.8 使格式化再次工作。Jeaf Gilbert 2023-07-10
版本 5 不再是 alpha 版本! =)Breno Mazieiro 2023-07-11
有效,谢谢!或pnpm add -D eslint-plugin-prettier@latest --save-exactelbik 2023-07-11
#2楼
得票数 12

就我而言,该问题与我用于预提交格式化的 pretty-quick 工具有关。当前版本 (pretty-quick v3.1.3) 与 prettier v3 不兼容,他们的存储库中存在问题 (链接)。由于 Pretty-quick 的最后一次更新是在 2 年前,我决定切换到 lint-staged,它与 Prettier v3 兼容,并且似乎更活跃/可维护(最后一个版本是 1 周前发布的)。转换非常简单,只需遵循自述文件即可: https://github.com/okonet/lint-staged

dhilt 提问于2023-07-06
dhilt 修改于2023-07-06
#3楼
得票数 12

我通过将 Prettier 降级到版本 2.8.8 解决了这个问题

esmoley 提问于2023-07-08
#4楼
得票数 5

降级到 prettier@^2.8.0 时,您必须安装 eslint-plugin-prettier@^4.0.0 才能使 prettier 和 eslint 正常工作

Bassem 提问于2023-07-16
#5楼
得票数 3

解决我的问题更简单,而且这个错误是一个转移注意力的错误。

我包含了所有 eslint 插件,但忘记实际包含 prettier 本身。

yarn

yarn add -D prettier

npm

npm install --save-dev prettier

希望这可以在其他人陷入困境之前对其有所帮助。幸亏我很快就意识到了。

mawburn 提问于2023-07-12
webjay 修改于2023-07-22
标签