Skip to content

Neovim: TypeError: server.workspaceFolders.keys is not a function or its return value is not iterable\n at createLs (~/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server/lib/hybridModeProject.js:94:193) #4706

@Napam

Description

@Napam

Vue - Official extension or vue-tsc version

2.0.29

VSCode version

None, Im using Neovim 0.10.1

Vue version

3.4.29

TypeScript version

5.4.0

System Info

System:
    OS: macOS 14.6.1
    CPU: (10) arm64 Apple M2 Pro
    Memory: 102.89 MB / 16.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 20.11.1 - ~/.nvm/versions/node/v20.11.1/bin/node
    Yarn: 1.22.22 - ~/.nvm/versions/node/v20.11.1/bin/yarn
    npm: 10.8.1 - ~/.nvm/versions/node/v20.11.1/bin/npm
    pnpm: 9.1.1 - ~/.nvm/versions/node/v20.11.1/bin/pnpm
  Browsers:
    Chrome: 127.0.6533.120
    Edge: 113.0.1774.57
    Safari: 17.6

Steps to reproduce

Attempt to start volar lsp on a .vue file

What is expected?

The LSP to not fail

What is actually happening?

I get the following error:

[ERROR][2024-08-18 17:46:41] .../vim/lsp/rpc.lua:770    "rpc"   "/Users/naphat/.local/share/nvim/mason/bin/vue-language-server" "stderr"        "/Users/naphat/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server/lib/hybridModeProject.js:94
        return (0, language_service_1.createLanguageService)(language, server.languageServicePlugins, (0, simpleProject_1.createLanguageServiceEnvironment)(server, [...server.workspaceFolders.keys()]), project);
                                                                                                                                                                                                ^

TypeError: server.workspaceFolders.keys is not a function or its return value is not iterable
    at createLs (/Users/naphat/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server/lib/hybridModeProject.js:94:193)
    at async Object.getLanguageService (/Users/naphat/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server/lib/hybridModeProject.js:50:24)
    at async updateDiagnostics (/Users/naphat/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server/node_modules/@volar/language-server/lib/features/languageFeatures.js:628:33)
    at async updateDiagnosticsBatch (/Users/naphat/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server/node_modules/@volar/language-server/lib/features/languageFeatures.js:624:13)

Node.js v20.11.1

Any additional comments?

Here is my relevant neovim config:

local vue_language_server_path = mason_registry
  .get_package("vue-language-server")
  :get_install_path() .. "/node_modules/@vue/language-server"

lspconfig.tsserver.setup({
  -- root_dir = require("lspconfig.util").root_pattern("package.json"),
  init_options = {
    plugins = {
      {
        name = "@vue/typescript-plugin",
        location = vue_language_server_path,
        languages = { "vue" },
      },
    },
  },
  filetypes = { "typescript", "javascript", "javascriptreact", "typescriptreact", "vue" },
  -- single_file_support = false,
})

lspconfig.volar.setup({})

I have based this on the informaiton provided in the README of this repository.

The directory I am starting neovim form is a base "npm create vue@latest" directory which looks like this:

README.md
env.d.ts
index.html
lvim.lunaruser
node_modules
package-lock.json
package.json
public
src
tsconfig.app.json
tsconfig.json
tsconfig.node.json
tsconfig.vitest.json
vite.config.ts
vitest.config.ts

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions