oraios/serena · error · FileNotFoundError

vue-language-server executable not found at {vue_executable_

Error message

vue-language-server executable not found at {vue_executable_path}, something went wrong with the installation.

What it means

Thrown as FileNotFoundError during VueLanguageServer construction when _setup_runtime_dependencies finishes installing but the vue-language-server executable is still missing at vue_executable_path. The Vue server needs both vue-language-server and typescript-language-server, and each is verified before launch.

Source

Thrown at src/solidlsp/language_servers/vue_language_server.py:609

                log.info(
                    f"Vue Language Server version mismatch: installed={installed_version}, expected={expected_version}. Reinstalling..."
                )
                needs_install = True
        else:
            # No version file exists, assume old installation needs refresh
            log.info("Vue Language Server version file not found. Reinstalling to ensure correct version...")
            needs_install = True

        if needs_install:
            log.info("Installing Vue/TypeScript Language Server dependencies...")
            deps.install(vue_ls_dir)
            # Write version marker file
            with open(version_file, "w") as f:
                f.write(expected_version)
            log.info("Vue language server dependencies installed successfully")

        if not os.path.exists(vue_executable_path):
            raise FileNotFoundError(
                f"vue-language-server executable not found at {vue_executable_path}, something went wrong with the installation."
            )

        if not os.path.exists(ts_ls_executable_path):
            raise FileNotFoundError(
                f"typescript-language-server executable not found at {ts_ls_executable_path}, something went wrong with the installation."
            )

        return [vue_executable_path, "--stdio"], tsdk_path, ts_ls_executable_path

    def _create_base_initialize_params(self) -> dict:
        initialize_params = {
            "locale": "en",
            "capabilities": {
                "textDocument": {
                    "synchronization": {"didSave": True, "dynamicRegistration": True},
                    "completion": {"dynamicRegistration": True, "completionItem": {"snippetSupport": True}},
                    "definition": {"dynamicRegistration": True, "linkSupport": True},

View on GitHub (pinned to 7fcbca7e62)

Solutions

  1. Delete the vue language server install directory (including any stale version marker file) and retry to force a clean install.
  2. Install manually: npm install -g @vue/language-server and point ls_path at the binary.
  3. Check npm error output, network/proxy configuration, and disk space.
  4. Verify execute permissions on the expected executable path.
  5. Check Node.js is installed and recent enough for the Vue language server.

Example fix

// before: stale install dir blocks reinstall
# rm -rf ~/.solidlsp/servers/vue-language-server
ls = SolidLSP("vue", "/repo")
// after
# fresh install, then verify
cmd, tsdk, ts_ls = VueLanguageServer._setup_runtime_dependencies(...)  # succeeds after clean install
Defensive patterns

Strategy: try-catch

Validate before calling

import os
if not os.path.isfile(vue_executable_path):
    subprocess.run(["npm", "install", "-g", "@vue/language-server", "typescript", "typescript-language-server"], check=True)

Type guard

def is_executable_file(path: str) -> bool:
    return os.path.isfile(path) and os.access(path, os.X_OK)

Try / catch

try:
    ls = SolidLSP("vue", repo_path)
except FileNotFoundError as e:
    if "executable not found" in str(e):
        # wipe install dir + stale version marker, then retry
        shutil.rmtree(vue_ls_install_dir, ignore_errors=True)
        ls = SolidLSP("vue", repo_path)
    else:
        raise

Prevention

When it happens

Trigger: Instantiating the Vue language server triggers _setup_runtime_dependencies (called from __init__); after the install routine and version-marker write, os.path.exists(vue_executable_path) is False.

Common situations: npm/global install of @vue/language-server failing or partially completing; network/proxy blocking the download; interrupted first run leaving a stale version marker; permission problems writing the install directory.

Related errors


AI-assisted analysis of oraios/serena@7fcbca7e62 (2026-08-29). Data as JSON: /api/errors/163daed8022d6984. Report an issue: GitHub.