为什么Prettier不格式化VSCODE中的代码?


99

在安装和启用了ESlint和Prettier的Nuxt应用程序中,我切换到了Visual Studio Code编辑器。

当我打开.vue文件并按CMD+ Shift+P 并选择“格式化文档”时,我的文件根本没有被格式化

我的 .prettierrc 设置

{
  "tabWidth": 2,
  "semi": false,
  "singleQuote": true
}

我有很多源代码行,我无法手动设置它们的格式。我究竟做错了什么?


3
似乎默认情况下漂亮的具有["vue"]
prettier.disableLanguages

我将添加到.prettierrc"disableLanguages": []。Docs说,此更改需要重新启动
barbsan

1
v1.27.2也存在一个问题,请注意,相同的配置适用于v.1.23
barbsan

确实,我有VSCode 1.27.2
Billal Begueradj '18

3
赞成b / c只需按CMD+ Shift+,P然后按Format Document,然后选择Prettier作为我的默认格式化程序即可:D
Blundering Philosopher 19/10 / 25,9

Answers:


230

在对Prettier停止在VSCode中工作感到非常沮丧之后,我如何对其进行排序。

  1. 选择VS Code-> View-> Command Palette,然后键入:Format Document With
  2. 然后Configure Default Formatter...再选择Prettier - Code formatter

这为我神奇地解决了问题。

根据您的情况,这可能会帮助您...


2
我确实在设置中将Prettier配置为std格式化程序,但它无法正常工作。这工作了。让我开心!
garyee

此处相同,但是我必须取消选择默认格式化程序,然后再次执行您提到的操作才能起作用。
lmerino

3
不知道在哪里可以找到,Configure Default Formatter但是我使用了File-> Settings-> Text
Editor-

当我将默认格式化程序选择为Prettier时,它将格式化该文件,但之后将无法保存。我检查了我的保存选项,但仍然。我不得不一次又一次地选择默认格式化程序。任何解决方案
Himanshu Tariyal

@HimanshuTariyal这应该对您有用,但是请随时查看我的解决方案:stackoverflow.com/a/64273353/4298115
lbragile

77

如果执行@Simin Maleki提到的操作不能为您解决问题,则有可能未设置默认格式化程序:

File > Preferences > Settings > Search for "default formatter" 

确保您输入Editor: Default Formatter的不是null,而是esbenp.prettier-vscode勾选了以下所有语言。这解决了我的问题。

循序渐进

启用默认格式化程序的步骤

还要确保启用了保存格式:

保存支票格式


5
这实际上为我解决了这个问题。谢谢。
天文学博士

2
现场应该是答案
Psymon25 '20

2
我的vscode在经过数月的正常工作后,会随机停止使用更漂亮的工具,不知道为什么可以解决这个问题:祈祷:
ncubica

1
解决了!!!!谢谢,我的朋友!!!
Antonio Pavicevac-Ortiz

1
这是答案,我正在寻找!
strudel

75

漂亮的还可以在保存时格式化文件。

但是,安装和启用不会导致工作。

您必须在VSCode中检查“保存时的格式”:设置>>用户>>文本编辑器>>格式

在此处输入图片说明


18
alt (command) + shift + f用于格式化而不保存。
yaya

1
请注意,除了启用“保存时格式化”之外,您通常还必须指定默认的格式化程序。
安迪

50

有时,当代码中存在语法错误时,漂亮的脚本会停止工作。您可以通过单击Prettier旁边右下角的x按钮来查看错误。

在此处输入图片说明


2
有时Prettier不会显示在底部,但是会显示另一个扩展名(例如ESLint),如果单击它,则会出现一个下拉菜单以选择其他工具...包括Prettier。选择它以查看Prettier的日志(然后Prettier应该显示在托盘中)。
machineghost

13

这不是prettier-vscodePrettier本身的问题,而是VSCode扩展。根据其文档,Vue格式默认为禁用:

prettier.disableLanguages(默认值:[“ vue”])

禁用此扩展名的语言ID列表。需要重新启动。注意:禁用在父文件夹中启用的语言将阻止格式化,而不是让任何其他格式化程序运行

在这种情况下,要启用您应该设置"prettier.disableLanguages": []。并且由于这是扩展配置,因此您应该在VSCode设置文件中而不是在.prettierrc


12

我没有使用Vue,但是遇到了同样的问题。

我已经有了设定

  • Editor: default formatter 更漂亮
  • Editor: Format on Savetrue
  • 我已经.eslintrc.js.prettierrc文件,但没有奏效。

解决我的问题的方法是,所有设置都正确,但我需要:

  • Command+ Shift+p
  • 类型 format document with
  • 选择 Configure Default Formatter...
  • 选择Prettier默认。

我不知道为什么Editor: Format on Save设置true不够。我需要使用上述步骤选择默认格式化程序,这样才能正常工作。

在此处输入图片说明


11

我遇到了这个问题,这三个步骤解决了我的问题: 更漂亮不格式化代码


1
谢谢,我在众多选择中找不到。
crowmagnumb

7

1。使用另一个更漂亮的扩展名对我不起作用,我只是使用另一个名为VSCODE的扩展名,PrettierNow我认为这对我有帮助。在此处签出扩展名

2。.prettierrc如果要坚持使用漂亮的文件,则需要从最新版本的漂亮文件中添加文件到项目的根目录中。的一个例子.prettierrc是这-

{
  "tabWidth": 4,
  "singleQuote": true,
  "semi": false
}

5

对我来说-与ESlint有关,后者也与Prettier一起使用。Eslint无法正常工作(本地安装与全局安装冲突),从而破坏了Prettier。


如何解决这个问题。我遇到一个问题,当按Enter键并将其保存到相同位置时,Eslint要求换一行,并且错误再次开始出现。
ammad khan

4

在VSCode中启用“保存时格式化”:设置>>用户>>文本编辑器>>格式化对我有用!🙌

打印


3

您可以尝试将此部分添加到用户设置文件吗?

 "[javascript]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode",
        //   "editor.formatOnSave": true,
    },

3

有时使用自动插件更新,Prettier使用的必需文件可能会丢失。

如果此处存在文件或文件夹为空,请检查此路径

C:\ Users \您的用户名\ .vscode \ extensions \ esbenp.prettier-vscode-2.2.2 \ out

如果缺少,请重新安装并重新安装。


3

文件路径:

C:\Users\pgmre\AppData\Roaming\Code\User\settings.json

更改自:

"[javascript]": {
    "editor.defaultFormatter": "vscode.typescript-language-features"
},

至:

"[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
},

注意:

  • 如果不存在上述内容,请添加而不是进行更改。
  • 您应该已经安装了“ Prettier-代码格式化程序”才能看到上述更改的效果。

谢谢。公认的解决方案为我工作。但是也许您的反馈可以对其他人有用。感谢您分享的信息
Billal Begueradj

1
@BillalBegueradj是的,接受对我没有用,我浪费了大约1个小时,所以发布了这个。也许这是我们在2020
。– Manohar Reddy Poreddy

您的解决方案是“非图形化”解决方案:stackoverflow.com/a/64273353/4298115
lbragile

@ lbragile我不能使用GUI来做到这一点,因此上面的解决方案。特别是,当我们有多种用于各种语言的格式化程序时,这是一种更好的方法,当我们可以通过打开一个文件来复制粘贴一行时,没有时间浪费。
Manohar Reddy Poreddy,


2

如果没有其他答案有效,请检查.prettierrc工作目录中是否存在冲突的漂亮配置,或者检查.prettierignore以确保没有忽略文件/文件夹。


2

转到管理(位于左下角)->设置->用户选项卡->文本编辑器->格式设置->检查保存格式

如果不起作用,请关闭并再次打开您的vscode编辑器


2

对我来说,问题出在HTML文件上,格式化一天就停止了。我配置了“保存时格式化”,该格式适用于HTML以外的所有文件。

然后我意识到我实验性地设定了 “保存模式下的格式”modification而不是file忘记了。这具有不格式化HTML文件中的任何内容的效果,令人惊讶的是,甚至没有我的更改。重新设置即可file解决该问题。

在此处输入图片说明


1

最近,我遇到了同样的问题,即Prettier不会在保存时自动格式化代码。检查更漂亮,我看到一个错误:无效"arrowParens"值。预期“始终”或“避免”,但已收到true

当我单击此错误消息时看到: 在此处输入图片说明

原来,我还安装了Prettier Now。这在我的配置文件中有一个布尔值。卸载Prettier Now之后,一切正常。


1

尽管进行了所有这些设置,您仍然会遇到问题。在这种情况下,如先前的回答所指出的那样,检查VSCode底部状态栏中的更漂亮的通知将是一个好方法。

在此处输入图片说明

单击该状态时,输出面板应在HTML文件中报告该问题。对我来说,问题是我在ap标签中有一个div,我认为它更漂亮/ VSCode约定是反对的。当我删除它(并与上面的所有设置结合使用时,即默认格式设置和保存时的格式)时,我变得更漂亮了。

除非您要覆盖VSCode设置,否则不需要.prettierrc


0

不要忘记在VSCode的设置中启用“ editor.defaultFormatter”。在我的情况下,它为null,因此即使“ editor.formatOnSave”也似乎无法解决该问题。


8
这对提及同一件事的其他4个答案有什么帮助?
krisz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.