{"record":{"id":"6ab2e439167d44f4","repo":"oraios/serena","slug":"typescript-language-server-executable-not-found-at-6ab2e4","errorCode":null,"errorMessage":"typescript-language-server executable not found at {ts_ls_executable_path}, something went wrong with the installation.","messagePattern":"typescript-language-server executable not found at (.+?), something went wrong with the installation\\.","errorType":"exception","errorClass":"FileNotFoundError","httpStatus":null,"severity":"error","filePath":"src/solidlsp/language_servers/vue_language_server.py","lineNumber":614,"sourceCode":"            # No version file exists, assume old installation needs refresh\n            log.info(\"Vue Language Server version file not found. Reinstalling to ensure correct version...\")\n            needs_install = True\n\n        if needs_install:\n            log.info(\"Installing Vue/TypeScript Language Server dependencies...\")\n            deps.install(vue_ls_dir)\n            # Write version marker file\n            with open(version_file, \"w\") as f:\n                f.write(expected_version)\n            log.info(\"Vue language server dependencies installed successfully\")\n\n        if not os.path.exists(vue_executable_path):\n            raise FileNotFoundError(\n                f\"vue-language-server executable not found at {vue_executable_path}, something went wrong with the installation.\"\n            )\n\n        if not os.path.exists(ts_ls_executable_path):\n            raise FileNotFoundError(\n                f\"typescript-language-server executable not found at {ts_ls_executable_path}, something went wrong with the installation.\"\n            )\n\n        return [vue_executable_path, \"--stdio\"], tsdk_path, ts_ls_executable_path\n\n    def _create_base_initialize_params(self) -> dict:\n        initialize_params = {\n            \"locale\": \"en\",\n            \"capabilities\": {\n                \"textDocument\": {\n                    \"synchronization\": {\"didSave\": True, \"dynamicRegistration\": True},\n                    \"completion\": {\"dynamicRegistration\": True, \"completionItem\": {\"snippetSupport\": True}},\n                    \"definition\": {\"dynamicRegistration\": True, \"linkSupport\": True},\n                    \"references\": {\"dynamicRegistration\": True},\n                    \"documentSymbol\": {\n                        \"dynamicRegistration\": True,\n                        \"hierarchicalDocumentSymbolSupport\": True,\n                        \"symbolKind\": {\"valueSet\": list(range(1, 27))},","sourceCodeStart":596,"sourceCodeEnd":632,"githubUrl":"https://github.com/oraios/serena/blob/7fcbca7e62555ec2287ddb2f083caee805848ea6/src/solidlsp/language_servers/vue_language_server.py#L596-L632","documentation":"Thrown as FileNotFoundError during VueLanguageServer setup when the companion typescript-language-server executable is missing at ts_ls_executable_path after installation. The Vue server requires both vue-language-server and typescript-language-server; this is the second of the two existence checks.","triggerScenarios":"vue_executable_path exists but the typescript-language-server binary is absent when _setup_runtime_dependencies (called from __init__) performs its final check before returning launch command, tsdk_path, and ts_ls path.","commonSituations":"typescript-language-server install step skipped or failed while the Vue part succeeded; version mismatch between the Vue server and the TS server packages; proxy/registry blocking one npm package; manual installs providing one binary but not the other.","solutions":["Install typescript-language-server manually: npm install -g typescript typescript-language-server, then point config at it.","Wipe the shared install directory so both dependencies install together on the next run.","Check npm/network errors for the typescript-language-server package specifically.","Verify versions of both packages are compatible with the Vue language server version in use.","Confirm execute permission on ts_ls_executable_path."],"exampleFix":"// before: only vue-language-server installed\n# npm install -g @vue/language-server\n// after: install both required servers\n# npm install -g @vue/language-server typescript typescript-language-server","handlingStrategy":"try-catch","validationCode":"import os, shutil\nfor exe in (vue_executable_path, ts_ls_executable_path):\n    if not os.path.isfile(exe):\n        subprocess.run([\"npm\", \"install\", \"-g\", \"@vue/language-server\", \"typescript\", \"typescript-language-server\"], check=True)\n        break","typeGuard":"def both_servers_present(vue_path: str, ts_ls_path: str) -> bool:\n    import os\n    return all(os.path.isfile(p) and os.access(p, os.X_OK) for p in (vue_path, ts_ls_path))","tryCatchPattern":"try:\n    ls = SolidLSP(\"vue\", repo_path)\nexcept FileNotFoundError as e:\n    if \"typescript-language-server executable not found\" in str(e):\n        subprocess.run([\"npm\", \"install\", \"-g\", \"typescript\", \"typescript-language-server\"], check=True)\n        ls = SolidLSP(\"vue\", repo_path)\n    else:\n        raise","preventionTips":["Install both vue-language-server and typescript-language-server together; never install only one.","Keep the two package versions compatible with each other.","Pre-install in Docker images used for Vue analysis.","Run the existence checks (isfile + X_OK) in a startup smoke test."],"tags":["installation","npm","vue","typescript","file-not-found"],"backgroundTag":"language-server-install-failed","analyzedSha":"7fcbca7e62555ec2287ddb2f083caee805848ea6","analyzedAt":"2026-08-29T00:04:09.619Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}