ChatGPT解决这个技术问题 Extra ChatGPT

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

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

当我打开 .vue 文件并按 CMD+ Shift + P 并选择 Format Document< /strong>,我的文件根本没有得到 formatted

我的 .prettierrc settings

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

我有这么多源代码行,所以我无法手动格式化它们。我究竟做错了什么?

似乎默认情况下更漂亮已将 prettier.disableLanguages 设置为 ["vue"]
我将添加到 .prettierrc"disableLanguages": []。文档说此更改需要重新启动
v1.27.2 也有 issue,请注意相同的配置适用于 v.1.23
支持 b/c 只需按 CMD+ Shift + P 然后 Format Document,然后选择 Prettier 作为我的默认格式化程序对我有帮助:D
对我来说,即使进行了所有配置设置更改,它也无法正常工作。然后,我意识到我正在尝试格式化以 HTML 文件编写的代码片段 var x = "test";,而我应该将其写入 *.JS 文件。当我将 JS 代码写入 JS 文件时,它被格式化为 var x = 'test'

R
RobC

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

选择 VS Code -> View -> Command Palette,然后输入:Format Document With Then Configure Default Formatter... 然后选择 Prettier - Code formatter。

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

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


我确实在设置中将 Prettier 配置为 std 格式化程序,但它不起作用。这行得通。成就了我的一天!
这里也一样,但是我必须取消选择我的默认格式化程序,然后执行您再次提到的操作才能使其正常工作。
不确定在哪里可以找到 Configure Default Formatter,但我使用了 File->Settings->Text Editor->Default Formatter
当我选择默认格式化程序作为 Prettier 时,它会格式化该文件,但之后它无法保存。我检查了我的保存选项,但仍然。我不得不一次又一次地选择默认格式化程序。任何解决方案
@HimanshuTariyal 这应该对您有用,但请随时查看我的解决方案:stackoverflow.com/a/64273353/4298115
l
lbragile

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

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

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

逐步演练

https://i.stack.imgur.com/DINkP.png

还要确保您的保存格式已启用:

https://i.stack.imgur.com/xBmiH.png


现场应该是答案
在正常工作几个月后,我的 vscode 随机停止使用 prettier,不知道为什么会修复它:祈祷:
我这样做了,也尝试了@miha 的解决方案,但无济于事。最后卸载/重新安装,它工作
是的,这就是答案
必须是公认的答案
F
FacePalm

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

https://i.stack.imgur.com/Zd03Y.png


有时 Prettier 不会显示在底部,但另一个扩展程序(例如 ESLint)会显示,如果你点击它,就会有一个下拉菜单来选择其他工具……包括 Prettier。选择它以查看 Prettier 的日志(之后 Prettier 应显示在托盘中)。
太感谢了!这花了我两个小时试图弄清楚无济于事,直到我看到你的答案。这么简单的事情。
你救了我的命。我忘了在我的配置文件前加一个点,所以它默认使用 VS Code 配置。
我没有在右下角看到 prettier。我有 "editor.defaultFormatter": "esbenp.prettier-vscode", 并安装了分机。想要powershell格式。
N
Norbert Bartko

Prettier 还可以在保存时格式化您的文件。

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

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

https://i.stack.imgur.com/unii7.png


alt (command) + shift + f 也用于格式化而不保存。
请注意,除了启用保存时格式化之外,您通常还必须指定默认格式化程序。
遵循顶部的每个解决方案,它在这一点上起作用了:),非常感谢
使用 alt (command) + shift + f 帮助了我。由于存在多个,因此会弹出一个选择默认格式化程序的弹出窗口。
还有 alt + shift + f,给我一个简单的方法来选择默认的格式化程序
L
Levent Divilioglu

在安装 prettier 后,您只需配置默认格式化程序并选中设置中保存时格式化的复选框即可。不要乱用其他配置文件。

1 - 选择默认格式化程序

打开文件 -> 首选项 -> 设置(或 Ctrl + , 在 Windows 中)。搜索编辑器:默认格式化程序 选择您的默认格式化程序为 Prettier - Code Formatter;

见下图;

https://i.stack.imgur.com/gsqh8.png

2 - 保存格式

打开文件 -> 首选项 -> 设置(或 Ctrl + , 在 Windows 中)。搜索编辑器:保存时格式化 单击保存时格式化下的复选框;

见下图;

https://i.stack.imgur.com/7jMCf.png


Y
Ymin Hu

禁用和启用 prettier 扩展解决了我的问题


如果所有其他配置都是正确的,这将起到作用。
不敢相信这就是它......试图解决这个问题将近一个小时。安装了 vs 扩展,安装了 npm 包,settings.json 设置,eslintrc 很好,尝试切换设置,进入设置面板,一切......我很惊讶就是这样,因为我尝试“关闭它并再次开启”在所有其他方面,设置似乎立即应用......
看来我的问题是由升级我的节点版本引起的。这样做可以解决问题。
使用命令面板中的 Developer: Reload Window 也对我有用。
当我为 Solidity 文件配置格式时,这对我有用,我花了 2 周时间试图让它再次工作,只是为了找到一个简单的“你是否尝试过关闭和打开它”会奏效。 :/
J
Juan Castano

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

我已经有设置

编辑器:默认格式化程序更漂亮

编辑器:保存为真时的格式

我已经有 .eslintrc.js 和 .prettierrc 文件但没有任何效果。

我的问题的解决方案是我已经正确设置,除了我需要:

命令 + Shift + p

键入格式文档

选择配置默认格式化程序...

选择 Prettier 作为默认值。

我不知道为什么将 Editor: Format on Save 设置为 true 还不够。我需要使用上述步骤选择默认格式化程序,以便它工作。

https://i.stack.imgur.com/6uamN.png


如果你已经有 ESlint 配置,你可能应该通过 ESlint 使用 Prettier。以下是关于如何实现此类目标的 my answer
i
iPzard

您可以尝试将此部分添加到您的 VS Code settings.json 文件中吗?

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

这也是我的情况。通过禁用保存时格式化,默认格式化程序被设置为正确的格式化程序。
这对我有用
这就是我的情况!!谢谢,它不起作用,因为 formatOnSave 在 json 中设置为 false
A
Arsham Arya

https://i.stack.imgur.com/3Euic.png


谢谢,我在众多选项中找不到这个。
s
supi

尽管有所有这些设置,您仍然可能遇到问题。在这种情况下,正如之前的回答中所指出的那样,最好在 VSCode 的底部状态栏中检查更漂亮的通知。

https://i.stack.imgur.com/S5buS.png

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

.prettierrc 不是必需的,除非你想覆盖 VSCode 设置


谢谢,你拯救了我的一天。
这是我的情况!太感谢了。
其他答案都不适合我,这是我的问题..
M
Manohar Reddy Poreddy

在 Windows 上:

我们可以使用以下文件打开:

Start > Run 

文件路径:

%AppData%\Code\User\settings.json

更改自:

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

至:

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

笔记:

如果以上不存在,请添加而不是更改。

您应该已经安装了“Prettier - 代码格式化程序”以查看上述更改的效果 - https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode


谢谢你。接受的解决方案对我有用。但也许您的反馈对其他人有用。感谢您分享信息
@BillalBegueradj 是的,接受对我不起作用,我浪费了大约 1 个小时,所以发布了这个。也许这是我们在 2020 年面临的一个较新的问题。
如何在macos中添加?
@MalithKuruppu 这也适用于 macOS。您只需按 cmd+p 并选择“首选项:打开设置 (JSON)”即可访问 settings.json 文件。
这对我有用,谢谢!
L
Lucas

这不是 Prettier 本身的问题,而是 VSCode 扩展的 prettier-vscode。根据 its documentation,Vue 格式化默认是禁用的:

prettier.disableLanguages (default: ["vue"]) 禁用此扩展的语言 ID 列表。需要重启。注意:禁用父文件夹中启用的语言将阻止格式化,而不是让任何其他格式化程序运行

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


此设置已被删除。
是的,OP 应该更新或删除它,否则投票将流向...:p
S
Skocdopole

对我来说,问题在于 HTML 文件的格式在某一天停止工作。我配置了 Format On Save ,它适用于除 HTML 之外的所有文件。

然后我意识到我实验性地将 Format On Save Mode 设置为 modification 而不是 file 并忘记了它。这产生了没有格式化 HTML 文件中的任何内容的效果,令人惊讶的是,甚至我的更改也没有。将其设置回 file 解决了该问题。

https://i.stack.imgur.com/NZ1dI.png


这是唯一对我有用的答案!谢谢!
D
Devesh

1 . 使用另一个更漂亮的扩展对我不起作用我只是使用另一个名为 PrettierNow 的 VSCODE 扩展,我认为这对我有帮助。Checkout the extension here

2 .从prettier的最新更新中,如果您想坚持使用prettier,您需要在项目的根目录中添加.prettierrc文件。 .prettierrc 的一个例子是 -

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

S
Sonic Soul

就我而言,它被打字稿格式化程序劫持了。

它让我发疯,因为它不断重新格式化我的空间!

修复我做了cmd+.(设置)类型-> “默认格式化程序”

和未经检查的打字稿

https://i.stack.imgur.com/224tE.png


你是救生员! :)
Z
Zenox

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

Print


S
Srishti

如果 Prettier 在保存时自动格式化除 HTML 文件之外的所有其他文件:

Cmd + PCtrl + P 打开命令面板并在其中键入以下文本:

> open settings

从建议下拉菜单中单击 Preferences: Open Settings (JSON)。在 settings.json 文件中,检查 "[html]" 键是否存在。如果该键存在且其值指示使用 Visual Studio Code 中安装的另一个格式化扩展,则应将其重置为使用 Prettier

"[html]": {
    "esbenp.prettier-vscode"
}

例如,有时,当您安装 Prettier Now 扩展时,"[html]" 键的值可能是 "remimarsal.prettier-now"

如果您没有安装 Prettier 以外的任何其他格式化扩展,您也可以从 settings.json 文件中完全删除 "[html]" 键。


K
Kendra

这对我有用(我的默认格式化程序已经设置为 Prettier)

将默认格式化程序更改为默认重新启动 vscode 将默认格式化程序更改回 Prettier。


restart vscode 打开命令面板 (Ctrl + Shift + P) 并执行命令:Reload Window,谢谢!
P
Pankaj Sharma

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

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


W
Wide Awake

对我来说 - 它与 ESlint 相关,它也适用于 Prettier。 Eslint 无法正常工作(本地安装与全局安装冲突),这破坏了 Prettier。


如何解决这个问题。我遇到了一个问题,即 Eslint 在按下回车键时要求换行并保存它会回到相同的位置并且错误再次开始出现。
如果你已经有 ESlint 配置,你可能应该通过 ESlint 使用 Prettier。以下是关于如何实现此类目标的 my answer
j
jaop

最近我遇到了同样的问题,Prettier 在保存时不会自动格式化代码。检查 Prettier,我看到一个错误:无效的 "arrowParens" 值。应为“总是”或“避免”,但收到 true

https://i.stack.imgur.com/FeRfA.png

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


k
kartick shaw

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

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

C:\Users\YOURUSERNAME\.vscode\extensions\esbenp.prettier-vscode-2.2.2\out

如果缺少卸载并重新安装更漂亮


>“如果缺少卸载并重新安装更漂亮”对我来说是什么。我的所有设置都是正确的,并且从 NPM 脚本运行 prettier 甚至可以正常工作,但是在我卸载并重新安装之前,保存时的格式化并没有。
p
piouson

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


是的,对我来说,这是一条较旧的道路......所以它不会默默地工作。
T
TrueWill

检查您的项目目录(工作区)中是否有 .vscode/settings.json 文件。就我而言,有人签入了此文件:

{
  "editor.formatOnSave": false
}

解决方案:删除文件(也从源代码管理中删除)并将 .vscode/添加到 .gitignore(如果您使用的是git)。


H
Hayyaun

在某些情况下,prettier 作为依赖项提供,您可能需要在 prettier vscode 使用以下命令之一识别它之前安装它,具体取决于您使用的包管理器
npm iyarn


S
Semjon Mössinger

就我而言,事实证明我已经将 prettier 配置为使用不存在的配置文件(见下面的截图)。这很难找到,因为没有任何错误消息,但更漂亮只是没有用。也许这对某人也有帮助。

https://i.stack.imgur.com/haoOQ.png


A
Ali Monapour

我将更漂亮的回滚到 1.7.3 并修复它


R
Randall Flagg

就我而言,我必须执行以下操作:

从命令行安装 prettier (npm install --save-dev --save-exact prettier prettier-plugin-custom) 重新加载 VSCode

瞧,一切都开始工作了。

提示:为确保安装良好,我检查了版本:

npx prettier --version

这对我有用。我已经在全局范围内安装了 prettier,但它不起作用。如果我不得不猜测,那可能是 WSL 问题。
g
gandharv garg

检查 .prettierrc 中的 requirePragma,它说您需要为要格式化的文件添加顶级注释

删除该规则,它应该可以工作


k
kissu

如何通过 VScode 的 ESlint 插件格式化你的代码

好吧,与其给出如何使用 VScode's Prettier extension 的指南,我更愿意解释如何依赖 ESlint 并拥有两全其美:检查您的代码是否正确(ESlint),然后对其进行格式化(Prettier)。

这样做有什么好处?

不要强迫你的整个团队使用带有 Prettier 扩展的 VScode,也许有些人更喜欢 Vim、IntelliJ 的 Webstorm、Emacs 等......与工具无关的解决方案总是 IMO 更好。

我认为 linting 你的代码比格式化更重要,但是如果你有两个扩展同时工作,你可能会在格式化和 linting 之间发生冲突。

如果您运行的扩展更少(主要是因为它可以阻止冲突),您的硬件将更少挣扎

使用 ESlint + Prettier 组合将无需在代码库之外进行特定的个人配置(未跟踪)。您还将受益于拥有 Vue/Nuxt 特定的 ESlint 规则和更简单/更通用的配置。

可以将 ESlint 配置配置为在提交之前、在 CI/CD 或任何地方运行。

如何实现这种设置?

让我们首先安装 ESlint extension,并且只安装它,不要安装 Prettier 的。

https://i.stack.imgur.com/0F3N6.png

还没有安装 Vetur?

我强烈推荐它用于 Vue2 应用程序(目前 Nuxt 正在运行),你可以在下面找到它。它将允许快速简单地 ESlint (+ Prettier) 任何 .vue 文件。

完成后,使用 ctrl + shift + p (Windows/Linux) 或 cmd + shift + p (Mac) 访问 Command Palette 并输入 Preferences: Open Default Settings (JSON)

https://i.stack.imgur.com/TP7oY.png

在那里,你应该有这样的东西

{
  "workbench.colorTheme": "Solarized Dark", // example of some of your own configuration

  "editor.codeActionsOnSave": {
    "source.fixAll": true,
  },
  "eslint.options": {
    "extensions": [
      ".html",
      ".js",
      ".vue",
      ".jsx",
    ]
  },
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact",
    "html",
    "vue",
  ],
}

如何尝试您的配置现在可以正常工作?

要查看我的解决方案是否有效,请下载此 Github repo,获取最新的稳定 Node 版本(例如:14)并运行 yarn 以使其正常工作。否则,只需打开 VScode。
这个 repo 也可以用来通过检查我的文件来仔细检查你的配置是否正确!

然后,您可以访问任何 .js.vue 文件并查看那里的问题(命令面板:Problems: Focus on Problems View)。 nuxt.config.js/pages/index.vue 是很好的例子,这里是 index.vue 文件。

https://i.stack.imgur.com/2oDyc.png

您可以看到,我们确实有一些可以由 Prettier 修复的问题,但我们也确实存在 eslint(vue/require-v-for-key) 错误。顺便说一句,该解决方案可作为评论提供。

PS:如果你想像截图一样有内联的 ESlint 警告/错误,你可以安装 Error Lens,如果你想摆脱错误,这是一个超级棒的扩展。

保存此文件,您应该会看到所有可自动修复的事情都已为您完成。通常它主要是 Prettier 问题,但有时也可能是 ESlint。由于我们确实拥有 Nuxt 的 ESlint 规则,因此您也将获得一些开箱即用的良好实践!

塔达,它的工作!如果不是,请阅读我答案末尾的部分。

如果你想创建一个全新的项目

您可以运行 npx create-nuxt-app my-super-awesome-project 并在那里选择一些东西,最重要的当然是 Linting tools: Eslint + Prettier(点击空格以选择其中之一)。

https://i.stack.imgur.com/r5Qtc.png

警告:从今天开始,还有一个额外的步骤可以让 ESlint + Prettier 正常工作,如 Github issue 所示。修复应该很快就会发布,那么下面的配置就不再需要了!

要解决此问题,请运行 yarn add -D eslint-plugin-prettier 并仔细检查您的 .eslintrc.js 文件是否为以下

module.exports = {
  root: true,
  env: {
    browser: true,
    node: true
  },
  parserOptions: {
    parser: '@babel/eslint-parser',
    requireConfigFile: false
  },
  extends: [
    '@nuxtjs',
    'plugin:prettier/recommended', // this line was updated
    'prettier'
  ],
  plugins: [
  ],
  // add your custom rules here
  rules: {}
}

然后,你可以让它像上面一样工作得很好。保存文件,它应该一个接一个地运行 ESlint 然后 Prettier!

如果你还有一些问题

尝试再次使用命令面板和 ESLINT: restart ESLint Server 甚至 Developer: Reload Window

如果您需要帮助,请随时发表评论或与我联系