{"record":{"id":"cc108a86e47f78c7","repo":"zed-industries/zed","slug":"missing-executable-in-directory-container-dir","errorCode":null,"errorMessage":"missing executable in directory {container_dir:?}","messagePattern":"missing executable in directory (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/languages/src/typescript.rs","lineNumber":900,"sourceCode":"    node: &NodeRuntime,\n) -> Option<LanguageServerBinary> {\n    maybe!(async {\n        let old_server_path = container_dir.join(TypeScriptLspAdapter::OLD_SERVER_PATH);\n        let new_server_path = container_dir.join(TypeScriptLspAdapter::NEW_SERVER_PATH);\n        if new_server_path.exists() {\n            Ok(LanguageServerBinary {\n                path: node.binary_path().await?,\n                env: None,\n                arguments: typescript_server_binary_arguments(&new_server_path),\n            })\n        } else if old_server_path.exists() {\n            Ok(LanguageServerBinary {\n                path: node.binary_path().await?,\n                env: None,\n                arguments: typescript_server_binary_arguments(&old_server_path),\n            })\n        } else {\n            anyhow::bail!(\"missing executable in directory {container_dir:?}\")\n        }\n    })\n    .await\n    .log_err()\n}\n\n#[cfg(test)]\nmod tests {\n    use std::path::Path;\n\n    use gpui::{AppContext as _, BackgroundExecutor, Hsla, TestAppContext};\n    use project::FakeFs;\n    use rope::Rope;\n    use serde_json::json;\n    use task::TaskTemplates;\n    use theme::SyntaxTheme;\n    use unindent::Unindent;\n    use util::{path, rel_path::rel_path};","sourceCodeStart":882,"sourceCodeEnd":918,"githubUrl":"https://github.com/zed-industries/zed/blob/f4178619acd0d47ea1f76a2025c42962c6d6638c/crates/languages/src/typescript.rs#L882-L918","documentation":"Guard in get_cached_ts_server_binary: neither the old nor the new TypeScript server path exists under the container directory, so no cached language server binary can be returned. The Option-based guard signals the caller to fall back to a fresh download.","triggerScenarios":"Thrown at crates/languages/src/typescript.rs:900 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Delete the stale container directory so Zed re-downloads the TypeScript server","Check disk space and permissions on the language-server cache directory","Restart Zed to trigger a fresh server download"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f4178619acd0d47ea1f76a2025c42962c6d6638c","analyzedAt":"2026-08-20T19:29:52.058Z","contentChangedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}