Skip to content

There is no formatter for 'shellscript' files installed. #3796

@markuslewin

Description

@markuslewin

Summary

When using the Prettier VSCode extension with prettier-plugin-sh, I receive the message "There is no formatter for 'shellscript' files installed." when running the command "Format Document" on a .sh file.

Github Repository to Reproduce Issue

https://github.com/markuslewin/prettier-sh-no-formatter

Steps To Reproduce:

  1. Run npm install
  2. Open file.sh in VSCode
  3. Run command "Format Document"
  4. "There is no formatter for 'shellscript' files installed."

Expected result

The file file.sh should be formatted.

Actual result

I receive the message "There is no formatter for 'shellscript' files installed.".

Additional information

It seems like the problem is that some of the plugin's language objects include functions that cause the calls to postMessage to throw here and here.

Related issue in the Prettier repo: un-ts/prettier#489.

VS Code Version:

Version: 1.104.3 (user setup)
Commit: 385651c938df8a906869babee516bffd0ddb9829
Date: 2025-10-02T12:30:51.747Z
Electron: 37.3.1
ElectronBuildId: 12404162
Chromium: 138.0.7204.235
Node.js: 22.18.0
V8: 13.8.258.31-electron.0
OS: Windows_NT x64 10.0.26100

Prettier Extension Version: 11.0.0

Prettier Log Output

["INFO" - 3:53:59 PM] Extension Name: esbenp.prettier-vscode.
["INFO" - 3:53:59 PM] Extension Version: 11.0.0.
["DEBUG" - 3:53:59 PM] Enabling Prettier globally
{
  "languageSelector": [
    {
      "language": "javascript"
    },
    {
      "language": "mongo"
    },
    {
      "language": "javascriptreact"
    },
    {
      "language": "typescript"
    },
    {
      "language": "typescriptreact"
    },
    {
      "language": "json"
    },
    {
      "language": "jsonc"
    },
    {
      "language": "json5"
    },
    {
      "language": "css"
    },
    {
      "language": "postcss"
    },
    {
      "language": "less"
    },
    {
      "language": "scss"
    },
    {
      "language": "handlebars"
    },
    {
      "language": "graphql"
    },
    {
      "language": "markdown"
    },
    {
      "language": "mdx"
    },
    {
      "language": "html"
    },
    {
      "language": "vue"
    },
    {
      "language": "yaml"
    },
    {
      "language": "ansible"
    },
    {
      "language": "home-assistant"
    },
    {
      "language": "jsonc",
      "scheme": "vscode-userdata"
    }
  ],
  "rangeLanguageSelector": [
    {
      "language": "javascript"
    },
    {
      "language": "javascriptreact"
    },
    {
      "language": "typescript"
    },
    {
      "language": "typescriptreact"
    },
    {
      "language": "json"
    },
    {
      "language": "jsonc"
    },
    {
      "language": "graphql"
    }
  ]
}
["DEBUG" - 3:54:05 PM] Local prettier module path: /home/markus/projects/prettier-sh-no-formatter/node_modules/prettier/index.cjs
["DEBUG" - 3:54:05 PM] Using prettier version 3.6.2
["INFO" - 3:54:05 PM] Using config file at /home/markus/projects/prettier-sh-no-formatter/.prettierrc
["ERROR" - 3:54:05 PM] Error handling text editor change
["ERROR" - 3:54:05 PM] function({ filepath }) {
      const basename = path.basename(filepath);
      return basename === ".env" || ba...<omitted>... } could not be cloned.
DataCloneError: function({ filepath }) {
      const basename = path.basename(filepath);
      return basename === ".env" || ba...<omitted>... } could not be cloned.
    at new DOMException (node:internal/per_context/domexception:66:5)
    at p (/home/markus/.vscode-server/extensions/esbenp.prettier-vscode-11.0.0/dist/worker/prettier-instance-worker.js:1:657)
    at /home/markus/.vscode-server/extensions/esbenp.prettier-vscode-11.0.0/dist/worker/prettier-instance-worker.js:1:914

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingstaleNo recent activity

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions