zed-industries/zed · error

Prettier dir {prettier_dir:?} is not a directory

Error message

Prettier dir {prettier_dir:?} is not a directory

What it means

Prettier::start's entry guard found that the resolved prettier_dir path exists but is not a directory (or does not exist at all). The expected prettier installation directory is missing or malformed, so the prettier server cannot be launched from it.

Source

Thrown at crates/prettier/src/prettier.rs:299

    ) -> anyhow::Result<Self> {
        Ok(Self::Test(TestPrettier {
            default: prettier_dir == default_prettier_dir().as_path(),
            prettier_dir,
        }))
    }

    #[cfg(not(any(test, feature = "test-support")))]
    pub async fn start(
        server_id: LanguageServerId,
        prettier_dir: PathBuf,
        node: NodeRuntime,
        request_timeout: Duration,
        mut cx: AsyncApp,
    ) -> anyhow::Result<Self> {
        use lsp::{LanguageServerBinary, LanguageServerName};

        let executor = cx.background_executor().clone();
        anyhow::ensure!(
            prettier_dir.is_dir(),
            "Prettier dir {prettier_dir:?} is not a directory"
        );
        let prettier_server = default_prettier_dir().join(PRETTIER_SERVER_FILE);
        anyhow::ensure!(
            prettier_server.is_file(),
            "no prettier server package found at {prettier_server:?}"
        );

        let node_path = executor
            .spawn(async move { node.binary_path().await })
            .await?;
        let server_name = LanguageServerName("prettier".into());
        let server_binary = LanguageServerBinary {
            path: node_path,
            arguments: vec![prettier_server.into(), prettier_dir.as_path().into()],
            env: None,
        };

View on GitHub (pinned to f4178619ac)

Solutions

  1. Reinstall prettier dependencies so the expected directory structure exists
  2. Check that prettier_dir was resolved to the real node_modules path and was not corrupted by symlink or path-style issues
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/prettier/src/prettier.rs:299 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20). Data as JSON: /api/errors/29a8491fd87cc53e. Report an issue: GitHub.