Skip to content

Unable to format when importing a json file #3881

@hawai1401

Description

@hawai1401

Preflight Checklist

Issue Summary

When importing a json file like this :
import config from "config.json" with { type: "json" };
Prettier don't want to format the entire file anymore and it's annoying because i import json in each file of my projet.

Reproduction Repository

https://github.com/hawai1401/hawai-s-tech-bot

Steps to Reproduce

  • Create a js file and a json file
  • import the json file like this : import config from "config.json" with { type: "json" };
  • save
    Prettier will crash

Expected Behavior

I expected prettier to ignore this and format the file.

Actual Behavior

It crashes and do anything.

Operating System

Windows

VS Code Version

1.106.3

Prettier Extension Version

11.0.2

Prettier Version

0

Prettier Extension Logs

["INFO" - 18:55:56] Formatting file:///c%3A/Users/iyedb/OneDrive/Documents/Code/TypeScript/Discord/Hawai%27s%20Tech%20TypeScript/src/prefix%20commands/Informations/info-bot.ts
["INFO" - 18:55:56] PrettierInstance:
{
  "doc": {
    "builders": {
      "line": {
        "type": "line"
      },
      "softline": {
        "type": "line",
        "soft": true
      },
      "hardline": {
        "type": "concat",
        "parts": [
          {
            "type": "line",
            "hard": true
          },
          {
            "type": "break-parent"
          }
        ]
      },
      "literalline": {
        "type": "concat",
        "parts": [
          {
            "type": "line",
            "hard": true,
            "literal": true
          },
          {
            "type": "break-parent"
          }
        ]
      },
      "lineSuffixBoundary": {
        "type": "line-suffix-boundary"
      },
      "cursor": {
        "type": "cursor"
      },
      "breakParent": {
        "type": "break-parent"
      },
      "trim": {
        "type": "trim"
      },
      "hardlineWithoutBreakParent": {
        "type": "line",
        "hard": true
      },
      "literallineWithoutBreakParent": {
        "type": "line",
        "hard": true,
        "literal": true
      }
    },
    "printer": {},
    "utils": {},
    "debug": {}
  },
  "version": "2.8.8",
  "util": {},
  "__internal": {
    "errors": {},
    "coreOptions": {
      "CATEGORY_CONFIG": "Config",
      "CATEGORY_EDITOR": "Editor",
      "CATEGORY_FORMAT": "Format",
      "CATEGORY_OTHER": "Other",
      "CATEGORY_OUTPUT": "Output",
      "CATEGORY_GLOBAL": "Global",
      "CATEGORY_SPECIAL": "Special",
      "options": {
        "cursorOffset": {
          "since": "1.4.0",
          "category": "Special",
          "type": "int",
          "default": -1,
          "range": {
            "start": -1,
            "end": null,
            "step": 1
          },
          "description": "Print (to stderr) where a cursor at the given position would move to after formatting.\nThis option cannot be used with --range-start and --range-end.",
          "cliCategory": "Editor"
        },
        "endOfLine": {
          "since": "1.15.0",
          "category": "Global",
          "type": "choice",
          "default": [
            {
              "since": "1.15.0",
              "value": "auto"
            },
            {
              "since": "2.0.0",
              "value": "lf"
            }
          ],
          "description": "Which end of line characters to apply.",
          "choices": [
            {
              "value": "lf",
              "description": "Line Feed only (\\n), common on Linux and macOS as well as inside git repos"
            },
            {
              "value": "crlf",
              "description": "Carriage Return + Line Feed characters (\\r\\n), common on Windows"
            },
            {
              "value": "cr",
              "description": "Carriage Return character only (\\r), used very rarely"
            },
            {
              "value": "auto",
              "description": "Maintain existing\n(mixed values within one file are normalised by looking at what's used after the first line)"
            }
          ]
        },
        "filepath": {
          "since": "1.4.0",
          "category": "Special",
          "type": "path",
          "description": "Specify the input filepath. This will be used to do parser inference.",
          "cliName": "stdin-filepath",
          "cliCategory": "Other",
          "cliDescription": "Path to the file to pretend that stdin comes from."
        },
        "insertPragma": {
          "since": "1.8.0",
          "category": "Special",
          "type": "boolean",
          "default": false,
          "description": "Insert @format pragma into file's first docblock comment.",
          "cliCategory": "Other"
        },
        "parser": {
          "since": "0.0.10",
          "category": "Global",
          "type": "choice",
          "default": [
            {
              "since": "0.0.10",
              "value": "babylon"
            },
            {
              "since": "1.13.0"
            }
          ],
          "description": "Which parser to use.",
          "choices": [
            {
              "value": "flow",
              "description": "Flow"
            },
            {
              "value": "babel",
              "since": "1.16.0",
              "description": "JavaScript"
            },
            {
              "value": "babel-flow",
              "since": "1.16.0",
              "description": "Flow"
            },
            {
              "value": "babel-ts",
              "since": "2.0.0",
              "description": "TypeScript"
            },
            {
              "value": "typescript",
              "since": "1.4.0",
              "description": "TypeScript"
            },
            {
              "value": "acorn",
              "since": "2.6.0",
              "description": "JavaScript"
            },
            {
              "value": "espree",
              "since": "2.2.0",
              "description": "JavaScript"
            },
            {
              "value": "meriyah",
              "since": "2.2.0",
              "description": "JavaScript"
            },
            {
              "value": "css",
              "since": "1.7.1",
              "description": "CSS"
            },
            {
              "value": "less",
              "since": "1.7.1",
              "description": "Less"
            },
            {
              "value": "scss",
              "since": "1.7.1",
              "description": "SCSS"
            },
            {
              "value": "json",
              "since": "1.5.0",
              "description": "JSON"
            },
            {
              "value": "json5",
              "since": "1.13.0",
              "description": "JSON5"
            },
            {
              "value": "json-stringify",
              "since": "1.13.0",
              "description": "JSON.stringify"
            },
            {
              "value": "graphql",
              "since": "1.5.0",
              "description": "GraphQL"
            },
            {
              "value": "markdown",
              "since": "1.8.0",
              "description": "Markdown"
            },
            {
              "value": "mdx",
              "since": "1.15.0",
              "description": "MDX"
            },
            {
              "value": "vue",
              "since": "1.10.0",
              "description": "Vue"
            },
            {
              "value": "yaml",
              "since": "1.14.0",
              "description": "YAML"
            },
            {
              "value": "glimmer",
              "since": "2.3.0",
              "description": "Ember / Handlebars"
            },
            {
              "value": "html",
              "since": "1.15.0",
              "description": "HTML"
            },
            {
              "value": "angular",
              "since": "1.15.0",
              "description": "Angular"
            },
            {
              "value": "lwc",
              "since": "1.17.0",
              "description": "Lightning Web Components"
            }
          ]
        },
        "plugins": {
          "since": "1.10.0",
          "type": "path",
          "array": true,
          "default": [
            {
              "value": []
            }
          ],
          "category": "Global",
          "description": "Add a plugin. Multiple plugins can be passed as separate `--plugin`s.",
          "cliName": "plugin",
          "cliCategory": "Config"
        },
        "pluginSearchDirs": {
          "since": "1.13.0",
          "type": "path",
          "array": true,
          "default": [
            {
              "value": []
            }
          ],
          "category": "Global",
          "description": "Custom directory that contains prettier plugins in node_modules subdirectory.\nOverrides default behavior when plugins are searched relatively to the location of Prettier.\nMultiple values are accepted.",
          "cliName": "plugin-search-dir",
          "cliCategory": "Config"
        },
        "printWidth": {
          "since": "0.0.0",
          "category": "Global",
          "type": "int",
          "default": 80,
          "description": "The line length where Prettier will try wrap.",
          "range": {
            "start": 0,
            "end": null,
            "step": 1
          }
        },
        "rangeEnd": {
          "since": "1.4.0",
          "category": "Special",
          "type": "int",
          "default": null,
          "range": {
            "start": 0,
            "end": null,
            "step": 1
          },
          "description": "Format code ending at a given character offset (exclusive).\nThe range will extend forwards to the end of the selected statement.\nThis option cannot be used with --cursor-offset.",
          "cliCategory": "Editor"
        },
        "rangeStart": {
          "since": "1.4.0",
          "category": "Special",
          "type": "int",
          "default": 0,
          "range": {
            "start": 0,
            "end": null,
            "step": 1
          },
          "description": "Format code starting at a given character offset.\nThe range will extend backwards to the start of the first line containing the selected statement.\nThis option cannot be used with --cursor-offset.",
          "cliCategory": "Editor"
        },
        "requirePragma": {
          "since": "1.7.0",
          "category": "Special",
          "type": "boolean",
          "default": false,
          "description": "Require either '@prettier' or '@format' to be present in the file's first docblock comment\nin order for it to be formatted.",
          "cliCategory": "Other"
        },
        "tabWidth": {
          "type": "int",
          "category": "Global",
          "default": 2,
          "description": "Number of spaces per indentation level.",
          "range": {
            "start": 0,
            "end": null,
            "step": 1
          }
        },
        "useTabs": {
          "since": "1.0.0",
          "category": "Global",
          "type": "boolean",
          "default": false,
          "description": "Indent with tabs instead of spaces."
        },
        "embeddedLanguageFormatting": {
          "since": "2.1.0",
          "category": "Global",
          "type": "choice",
          "default": [
            {
              "since": "2.1.0",
              "value": "auto"
            }
          ],
          "description": "Control how Prettier formats quoted code embedded in the file.",
          "choices": [
            {
              "value": "auto",
              "description": "Format embedded code if Prettier can automatically identify it."
            },
            {
              "value": "off",
              "description": "Never automatically format embedded code."
            }
          ]
        }
      }
    },
    "optionsModule": {
      "hiddenDefaults": {
        "astFormat": "estree",
        "printer": {},
        "locStart": null,
        "locEnd": null
      }
    },
    "optionsNormalizer": {},
    "utils": {}
  },
  "__debug": {}
}
["INFO" - 18:55:56] Using ignore file (if present) at c:\Users\iyedb\OneDrive\Documents\Code\TypeScript\Discord\Hawai's Tech TypeScript\.prettierignore
["INFO" - 18:55:56] File Info:
{
  "ignored": false,
  "inferredParser": "typescript"
}
["INFO" - 18:55:56] No local configuration (i.e. .prettierrc or .editorconfig) detected, falling back to VS Code configuration
["INFO" - 18:55:56] Prettier Options:
{
  "arrowParens": "always",
  "bracketSpacing": true,
  "endOfLine": "lf",
  "htmlWhitespaceSensitivity": "css",
  "insertPragma": false,
  "singleAttributePerLine": false,
  "bracketSameLine": false,
  "jsxBracketSameLine": false,
  "jsxSingleQuote": false,
  "printWidth": 80,
  "proseWrap": "preserve",
  "quoteProps": "as-needed",
  "requirePragma": false,
  "semi": true,
  "singleQuote": false,
  "tabWidth": 2,
  "trailingComma": "es5",
  "useTabs": false,
  "embeddedLanguageFormatting": "auto",
  "vueIndentScriptAndStyle": false,
  "experimentalTernaries": false,
  "filepath": "c:\\Users\\iyedb\\OneDrive\\Documents\\Code\\TypeScript\\Discord\\Hawai's Tech TypeScript\\src\\prefix commands\\Informations\\info-bot.ts",
  "parser": "typescript"
}
["ERROR" - 18:55:56] Error formatting document.
["ERROR" - 18:55:56] ';' expected. (9:43)
   7 | } from "discord.js";
   8 | import type { botClient, prefixCommand_data } from "../../index.js";
>  9 | import config from "../../../config.json" with { type: "json" };
     |                                           ^
  10 | import { platform, machine, cpus } from "os";
  11 | import { memoryUsage, version, uptime } from "process";
  12 | import { getDb } from "../../db/mongo.js";
SyntaxError: ';' expected. (9:43)
   7 | } from "discord.js";
   8 | import type { botClient, prefixCommand_data } from "../../index.js";
>  9 | import config from "../../../config.json" with { type: "json" };
     |                                           ^
  10 | import { platform, machine, cpus } from "os";
  11 | import { memoryUsage, version, uptime } from "process";
  12 | import { getDb } from "../../db/mongo.js";
    at v (c:\Users\iyedb\.vscode\extensions\esbenp.prettier-vscode-11.0.2\node_modules\prettier\parser-typescript.js:1:14679)
    at _H (c:\Users\iyedb\.vscode\extensions\esbenp.prettier-vscode-11.0.2\node_modules\prettier\parser-typescript.js:49:10722)
    at Object.cH [as parse] (c:\Users\iyedb\.vscode\extensions\esbenp.prettier-vscode-11.0.2\node_modules\prettier\parser-typescript.js:49:11028)
    at Object.parse (c:\Users\iyedb\.vscode\extensions\esbenp.prettier-vscode-11.0.2\node_modules\prettier\index.js:7515:23)
    at coreFormat (c:\Users\iyedb\.vscode\extensions\esbenp.prettier-vscode-11.0.2\node_modules\prettier\index.js:8829:18)
    at formatWithCursor2 (c:\Users\iyedb\.vscode\extensions\esbenp.prettier-vscode-11.0.2\node_modules\prettier\index.js:9021:18)
    at c:\Users\iyedb\.vscode\extensions\esbenp.prettier-vscode-11.0.2\node_modules\prettier\index.js:38183:12
    at Object.format (c:\Users\iyedb\.vscode\extensions\esbenp.prettier-vscode-11.0.2\node_modules\prettier\index.js:38197:12)
    at t.default.format (c:\Users\iyedb\.vscode\extensions\esbenp.prettier-vscode-11.0.2\dist\extension.js:1:16369)
    at t.PrettierEditProvider.provideEdits (c:\Users\iyedb\.vscode\extensions\esbenp.prettier-vscode-11.0.2\dist\extension.js:1:12927)
    at U3.provideDocumentFormattingEdits (file:///c:/Users/iyedb/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/workbench/api/node/extensionHostProcess.js:142:147300)
["INFO" - 18:55:56] Formatting completed in 107ms.

Prettier Configuration

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingtriage-pendingAwaiting initial triage

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions