vuejs / language-tools

⚡ High-performance Vue language tooling based-on Volar.js
https://marketplace.visualstudio.com/items?itemName=Vue.volar
MIT License
5.56k stars 373 forks source link

[Bug] neovim volar crash after version 2.0.20 #4491

Closed chaozwn closed 1 week ago

chaozwn commented 1 week ago

Vue - Official extension or vue-tsc version

2.0.21

VSCode version

neovim 0.10

Vue version

3.4.29

TypeScript version

5.5.2

System Info

System:
    OS: macOS 14.5
    CPU: (8) arm64 Apple M2
    Memory: 1.78 GB / 16.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 20.12.2 - ~/.nvm/versions/node/v20.12.2/bin/node
    Yarn: 1.22.22 - ~/.nvm/versions/node/v20.12.2/bin/yarn
    npm: 10.5.0 - ~/.nvm/versions/node/v20.12.2/bin/npm
    pnpm: 9.1.1 - ~/.nvm/versions/node/v20.12.2/bin/pnpm
  Browsers:
    Chrome: 126.0.6478.114
    Safari: 17.5

Steps to reproduce

  1. install astronvim.
  2. add plugins

    return {
    "AstroNvim/astrocommunity",
    { import = "astrocommunity.pack.typescript" },
    {
    "AstroNvim/astrolsp",
    optional = true,
    ---@type AstroLSPOpts
    opts = {
      ---@diagnostic disable: missing-fields
      config = {
        volar = {
          init_options = {
            vue = {
              hybridMode = false,
            },
          },
          settings = {
            typescript = {
              updateImportsOnFileMove = { enabled = "always" },
              inlayHints = {
                parameterNames = { enabled = "all" },
                parameterTypes = { enabled = true },
                variableTypes = { enabled = true },
                propertyDeclarationTypes = { enabled = true },
                functionLikeReturnTypes = { enabled = true },
                enumMemberValues = { enabled = true },
              },
            },
            javascript = {
              updateImportsOnFileMove = { enabled = "always" },
              inlayHints = {
                parameterNames = { enabled = "literals" },
                parameterTypes = { enabled = true },
                variableTypes = { enabled = true },
                propertyDeclarationTypes = { enabled = true },
                functionLikeReturnTypes = { enabled = true },
                enumMemberValues = { enabled = true },
              },
            },
          },
        },
        vtsls = {
          settings = {
            vtsls = {
              tsserver = {
                globalPlugins = {},
              },
            },
          },
          before_init = function(_, config)
            local astrocore_ok, astrocore = pcall(require, "astrocore")
            local registry_ok, registry = pcall(require, "mason-registry")
            if not astrocore_ok or not registry_ok then return end
    
            local volar_install_path = registry.get_package("vue-language-server"):get_install_path()
              .. "/node_modules/@vue/language-server"
    
            local vue_plugin_config = {
              name = "@vue/typescript-plugin",
              location = volar_install_path,
              languages = { "vue" },
              configNamespace = "typescript",
              enableForWorkspaceTypeScriptVersions = true,
            }
    
            astrocore.list_insert_unique(config.settings.vtsls.tsserver.globalPlugins, { vue_plugin_config })
          end,
        },
      },
    },
    },
    {
    "nvim-treesitter/nvim-treesitter",
    optional = true,
    opts = function(_, opts)
      if opts.ensure_installed ~= "all" then
        opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, { "vue" })
      end
    end,
    },
    {
    "williamboman/mason-lspconfig.nvim",
    optional = true,
    opts = function(_, opts)
      opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, { "volar" })
    end,
    },
    {
    "jay-babu/mason-nvim-dap.nvim",
    optional = true,
    opts = function(_, opts)
      opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, { "js" })
    end,
    },
    {
    "WhoIsSethDaniel/mason-tool-installer.nvim",
    optional = true,
    opts = function(_, opts)
      opts.ensure_installed =
        require("astrocore").list_insert_unique(opts.ensure_installed, { "vue-language-sever", "js-debug-adapter" })
    end,
    },
    }

Link to minimal reproduction

No response

Any additional comments?

No response

chaozwn commented 1 week ago

[ERROR][2024-06-22 17:08:42] .../vim/lsp/rpc.lua:770 "rpc" "/Users/jayce.zhao/.local/share/nvim/mason/bin/vue-language-server" "stderr" "/Users/jayce.zhao/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server/node_modules/@vue/language-core/lib/virtualFile/computedFiles.js:152 const mappings = (0, language_core_1.buildMappings)(code.content.map(segment => { ^

TypeError: (0 , language_core_1.buildMappings) is not a function at /Users/jayce.zhao/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server/node_modules/@vue/language-core/lib/virtualFile/computedFiles.js:152:64 at Array.map () at /Users/jayce.zhao/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server/node_modules/@vue/language-core/lib/virtualFile/computedFiles.js:150:24 at /Users/jayce.zhao/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server/node_modules/computeds/out/computed.js:13:68 at Tracker.track (/Users/jayce.zhao/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server/node_modules/computeds/out/tracker.js:43:20) at fn (/Users/jayce.zhao/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server/node_modules/computeds/out/computed.js:13:56) at /Users/jayce.zhao/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server/node_modules/@vue/language-core/lib/virtualFile/computedFiles.js:28:79 at Array.map () at /Users/jayce.zhao/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server/node_modules/@vue/language-core/lib/virtualFile/computedFiles.js:28:70 at /Users/jayce.zhao/.local/share/nvim/mason/packages/vue-language-server/node_modules/@vue/language-server/node_modules/computeds/out/computed.js:13:68

Node.js v20.12.2 "

so1ve commented 1 week ago

Let's track in https://github.com/vuejs/language-tools/issues/4493