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
- Reinstall prettier dependencies so the expected directory structure exists
- 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.