Prettier VSCode JSON 格式错误 - SyntaxError: ';'预期的

2024-03-11

 


Prettier VSCode JSON 格式错误


我正在尝试格式化JSON文件输入VS Code using Prettier但是,我尚未成功格式化任何 JSON 文件。我使用 Google 搜索解决方案,但无法返回任何有用的搜索结果。我想知道该怎么做,能够修复我遇到的错误,这样我就可以使用 VSCode Prettier 扩展来格式化 JSON 文件。如果我无法弄清楚这一点,我会满足于知道如何禁用 Prettier,并使用《VS-Code 语言特性》附带VS Code '盒子外面'.

 

下面是我的.prettierrc配置


  {
    "parser": "typescript",
    "useTabs": false,
    "tabWidth": 2,
    "printWidth": 120,
    "trailingComma": "none",
    "singleQuote": true,
    "bracketSpacing": true,
    "jsxBracketSameLine": false,
    "arrowParens": "always",
    "endOfLine": "auto",
    "htmlWhitespaceSensitivity": "css",
    "insertPragma": false,
    "jsxSingleQuote": false,
    "proseWrap": "preserve",
    "quoteProps": "as-needed",
    "requirePragma": false,
    "semi": true
    }



这是我尝试格式化的 JSON 文件

    {
        "Requester": {
            "City": "USBOS",
            "PostCode": "02143"
        }
    }



这是在控制台中打印的漂亮错误

    > "ERROR" -
    > 7:14:26 AM] Error formatting document. ';' expected. (2:12)   1 | {
    > 2 | "Requester": {
    >     |            ^   3 | "City": "USBOS",   4 | "PostCode": "02143"   5 | }, SyntaxError: ';' expected. (2:12)   1 | {
    > 2 | "Requester": {
    >     |            ^   3 | "City": "USBOS",   4 | "PostCode": "02143"   5 | },
    >     at t (C:\JSONTest\node_modules\prettier\parser-typescript.js:1:285)
    >     at Object.parse (C:\JSONTest\node_modules\prettier\parser-typescript.js:14:180461)
    >     at Object.parse (C:\JSONTest\node_modules\prettier\index.js:9739:19)
    >     at coreFormat (C:\JSONTest\node_modules\prettier\index.js:13252:23)
    >     at format (C:\JSONTest\node_modules\prettier\index.js:13510:73)
    >     at formatWithCursor (C:\JSONTest\node_modules\prettier\index.js:13526:12)
    >     at C:\JSONTest\node_modules\prettier\index.js:44207:15
    >     at Object.format (C:\JSONTest\node_modules\prettier\index.js:44226:12)
    >     at c:\Users\mmartins.BROKER\.vscode\extensions\esbenp.prettier-vscode-3.18.0\src\PrettierEditService.ts:382:30
    >     at t.default.safeExecution (c:\Users\mmartins.BROKER\.vscode\extensions\esbenp.prettier-vscode-3.18.0\src\PrettierEditService.ts:414:27)
    >     at t.default.<anonymous> (c:\Users\mmartins.BROKER\.vscode\extensions\esbenp.prettier-vscode-3.18.0\src\PrettierEditService.ts:381:17)
    >     at Generator.next (<anonymous>)
    >     at s (c:\Users\mmartins.BROKER\.vscode\extensions\esbenp.?
    > prettier-vscode-3.18.0\dist\extension.js:1:346242)



设置解析器有正确的方法和错误的方法Prettier用于格式化您的代码。我认为回答这个问题最好的方法是参考官方的更漂亮的文档@ https://prettier.io/docs/en/configuration.html#setting-the-parserdocsenoptionshtmlparser-option“https://www.prettier.io/docs/en” https://prettier.io/docs/en/configuration.html#setting-the-parserdocsenoptionshtmlparser-option直接,所以这就是我要做的。


以下根据 Prettier.io 官方文档

“永远不要将解析器选项放在配置的顶层。仅在覆盖内使用它。否则,您将有效地禁用 Prettier 基于自动文件扩展名的解析器推断。这会强制 Prettier 使用您为所有类型的文件指定的解析器 - 即使它没有意义,比如尝试将 CSS 文件解析为 JavaScript。”



以下段落为“已编辑”@“2022 年 1 月 15 日太平洋标准时间 4:02pm”

最初我必须阅读错误消息来解释配置,因为它是作为 OP 中发布的调试日志的一部分发出的。然而,我编辑了操作,并添加了配置,作为作者.prettierrc文件,以便问答两者都更有意义。

操作作者正在处理的问题是两个独立的问题,都与解析器相关。首先,在创建时“更漂亮的配置文件”,是否是我喜欢的类型:.prettierrc,或其他常见格式.prettierrc.js,或者其他什么,设置的规则是相同的。在这篇文章中,问题的作者添加了{"parser":"..."}设置,进入顶层更漂亮的配置文件,这是不正确的。作者所做的第二件事是不正确的,这是在顶层配置解析器的直接结果,他们试图使用“TypeScript 解析器”格式化一个“JSON 文件”。由于 JSON 完全不同,因此它们会出现错误。

这是一个在 a 中正确配置解析器的示例".prettierrc"文件看起来像。

{
  "overrides": [
    {
      "files": ["*.mts", "*.cts", "*.ts"],
      "options": {
        "parser": "typescript"
      }
    }
  ]
}

上面的代码片段演示了覆盖的内容.prettierrc配置文件看起来像是为特定的文件类型设置特定的解析器。

NOTE: 在本例中,我选择包含每种类型的 TypeScript 文件,因此可以将其视为为特定语言设置解析器。您还可以选择仅排除文件,而不提供包含列表。

同样重要的是,我们意识到上面的示例将成功配置 TypeScript 和 JSON 文件,即使没有配置任何其他格式设置。




这是一个显示完全配置的示例.prettierrc文件。这为 TypeScript 设置了不同的解析器(Babel TS 解析器),并指定了与 JSON 一起使用的解析器。
{
  "printWidth": 80,
  "endOfLine": "lf",
  "tabWidth": 2,
  "semi": true,
  "bracketSpacing": false,
  "useTabs": false,

  "overrides": [
    {
      "files": ["*.mjs", "*.cjs", "*.js"],
      "options": {
        "parser": "babel"
      }
    },

    {
      "files": ["*.mts", "*.cts", "*.ts"],
      "options": {
        "parser": "babel-ts"
      }
    },

    {
      "files": ["*.json", "*.jsonc", "*.json5"],
      "options": {
        "parser": "json5"
      }
    }
  ]
}




注意:上面的 prettierrc 文件是一个正确的例子;它用于 Linux 环境中的 TypeScript 配置。

如果你在 Windows 中添加“lf”行结尾,你很快就会破坏一切。重点是演示一个配置文件的工作示例,该文件更改了 prettier 使用的解析器。另外,如果你编写代码,你应该对解析器有深入的了解。如果您刚开始编写代码,这可能不是您需要跑去学习的第一件事,但解析代码是基本机制之一,它不仅使像 Prettier 这样的工具工作,而且使实际的编程语言本身工作。它们是整个计算机科学领域所固有的。无论如何,我不想偏离轨道。有几点需要记住,我将在下面列出。


需要记住的要点


  1. 上面的配置远不是唯一更漂亮的配置,但它是一个很好的使用参考,因为它是一个正确定义的配置文件。

  2. Prettier 是一个固执己见的代码格式化程序,这意味着它经过预设以确定您的大多数代码风格。这样做的好处是,如果这个问题的作者删除了他的所有内容.prettierrc文件,prettier 会格式化他的 JSON 文件,错误就会消失。问题是他提出来的。

  3. 这个 Stack Overflow 问答线程最相关的细节是,解析器很重要,如果你要为 Prettier 或其他一些软件配置它们,你应该知道你在做什么。如果您确实决定将解析器设置为非默认配置,您应该首先在工作状态下获得您正在处理的内容,因此如果您对解析器有任何问题,您可以稍后隔离这些问题以使其更容易解决最终的问题。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Prettier VSCode JSON 格式错误 - SyntaxError: ';'预期的 的相关文章

随机推荐

  • 无法访问对象原型上的方法

    我可以创建一个Cat对象并在其原型上设置一个方法来打印猫的名字 var log function message var results result results append p message p function Cat name
  • 从 OnActionExecuting 重定向到外部 url?

    我需要从 OnActionExecuting 方法重定向到外部网址 比方说 www google com 现在我正在使用这样的东西 public override void OnActionExecuting ActionExecuting
  • 如何使用变换原点让 svg 元素从中心旋转? [复制]

    这个问题在这里已经有答案了 我正在尝试对 svg 矩形元素进行非常简单的旋转 我希望这个元素相对于它的中心旋转 我试图使用transform origin属性来实现这一点 参见代码片段 尽管尝试使用 center 或 50 从中心旋转 但它
  • 使用 sql 查询在 hibernate 中创建新的对象实例

    我正在尝试使用查询在 hibernate 中创建一个对象 然后该对象将被保存回表示该类的表中 hbm xml 文件摘录
  • Django simple_tag 和设置上下文变量

    我正在尝试使用 simple tag 并设置上下文变量 我使用的是 django 的 trunk 版本 from django import template register simple tag takes context True d
  • strstr 不工作

    如果我输入 test 为什么这段特定的代码在 strstr 上返回 false char input 100 int main fgets input 100 stdin printf s input if strstr test mess
  • Perl 中有正则表达式来查找文件扩展名吗?

    Perl 中有正则表达式来查找文件扩展名吗 例如 如果我有 test exe 我怎样才能得到 exe my file test exe Match a dot followed by any number of non dots until
  • Ubuntu 上的 JAVA_HOME 定义不正确?

    我正在尝试在 Ubuntu 14 04 中安装一些软件 Shibboleth 我已经安装了 Java 7 OpenJDK usr lib jvm 我有这些行 usr environment JAVA HOME usr lib jvm jav
  • SQLite,将数据集/数据表复制到数据库文件

    我已经用创建的表填充了数据集another数据库文件 该表不在我希望能够将表复制到的数据库文件中 现在我想将所有这些记录 DataTable 保存到新创建的 SQLite 数据库文件中 我怎样才能做到这一点 另外 如果可能的话 我真的想避免
  • Microsoft.Extensions.Logging 对比自然对数

    我看到很多帖子提到将 Microsoft Extensions Logging 与 NLog 一起使用 我想更好地了解 Microsoft Extensions Logging 的用途是什么 具体来说为什么需要它或者与 NLog 一起使用它
  • Mongoose 具有 true 的独特布尔值

    我知道如何将字符串设置为在我的架构上唯一 如下所示 string type String unique true 但是有没有一种方法可以在对象上拥有具有 true 值的唯一布尔值并使用 false 默认设置 我需要的是 如果我尝试保存一个具
  • 以编程方式发送短信,无需短信编辑器窗口

    直到昨天 我还认为不使用 IOS 短信接口就不可能发送后台短信 这里很多人也保证 然而 今天我下载了一个名为 SmartSender 的新应用程序 它可以安排您的短信 然后自动发送 我测试了它 短信实际上并不是在后台发送的 而是出现一个本地
  • 尝试创建一个具有 6 个放射线的圆形菜单

    我正在尝试使用 html 和 css 创建一个带有 6 个径向线的圆形菜单 我只得到 6 个径向线 边界 中的 5 个 我需要获得第 5 项和第 6 项之间的最后一个径向 我需要得到相同的图片 DEMO http jsfiddle net
  • 我可以使 C++11 类/对象普遍线程安全吗?

    读过 据我了解 我可以确保我的类是线程安全的对于所有线程实现 通过使用 C 11 互斥体 我的理解正确吗 我期待的是要么是 可能有警告 要么不是 有原因 我的代码可能需要在目标平台上重新编译 但不需要更改我的源代码 彼得 换句话说 我应该能
  • 如何在 Win32 C++ 程序在后台运行时检测按键

    我有一个程序 每当我最小化它时 它就会进入系统托盘 我想知道的是 a 当我的程序位于系统托盘中时 如何检测按键操作 b 我怎么知道他们在键盘上按下了什么 特别是功能按钮 您需要使用设置键盘挂钩设置WindowsHookEx http msd
  • 在 R 中使用 ggplot2 创建多项目时间线

    我正在尝试创建一个多项目时间表 其中包含项目的各个阶段 以便将我们当前所有的项目组织在一个易于可视化的地方 我最初发现timeline 打包并能够半创建我所希望的东西 然而 该包似乎不太可定制 所以我希望在ggplot2 反而 这是我的假数
  • 找不到与 ASP.NET Web API 中的请求 URI 匹配的 HTTP 资源

    这是我的 TransferController 类的草图 所有这些都是 Web API 代码 public class TransferController ApiController HttpGet ActionName Queue pu
  • 如何使用 LINQ 获取具有特定子项的所有项?

    我的软件旨在加密和解密文件 用户将要处理的文件加载到 ListView 控件中 在控件中 每一项都是文件路径 其中包含一个子项 进程类型 ENCRYPT 或 DECRYPT 我需要获取具有 ENCRYPT 子项的所有项目 文件路径 的列表
  • 具有多个客户端的 Web 应用程序的数据库

    在现实世界的网络应用程序中 如何为多个客户 公司 客户存储数据 假设我们为一位客户提供以下集合 users tasks 我如何将该系统扩展到第二个客户端 有标准方法吗 注意 我正在使用 Firestore no sql 我们为每个客户使用一
  • Prettier VSCode JSON 格式错误 - SyntaxError: ';'预期的

    Prettier VSCode JSON 格式错误 我正在尝试格式化JSON文件输入VS Code using Prettier但是 我尚未成功格式化任何 JSON 文件 我使用 Google 搜索解决方案 但无法返回任何有用的搜索结果 我