gopls v0.10.1在Neovim中JSON RPC解析错误无法附着缓冲区
问题:gopls v0.10.1无法附着Neovim缓冲区,报JSON RPC解析错误
- 配置环境:通过mason、mason-lspconfig、nvim-lspconfig、null-ls、mason-null-ls配置Neovim,安装gopls v0.10.1
- 触发场景:打开Go文件时出现JSON RPC解析错误,错误信息:
RPC[Error] code_name = ParseError, message = "JSON RPC parse error: json: cannot unmarshal object into Go struct field PCompletionListPCompletion.capabilities.textDocument.completion.completionList.itemDefaults of type []string"
- 排查信息:
- 执行
:LspInfo可见null-ls已附着当前缓冲区,gopls标记为“可用”但无法附着,文件类型、根目录、命令参数均显示正常 gopls api-json输出正常- 针对gopls ~v0.6版本的旧JSON解析错误修复方案无效
- 执行
- 配置文件路径:nvim/.config/nvim/lua/kobra/lsp/init.lua
解决方案
这个错误是因为gopls v0.10.1新增的completionList.itemDefaults字段为对象类型,但旧版nvim-lspconfig仍期望其为数组类型,导致解析失败。按以下步骤解决:
更新nvim-lspconfig到最新版本
通过你的Neovim包管理器(如Packer、Lazy.nvim)同步更新nvim-lspconfig,确保插件支持gopls v0.10+的新字段格式。同步更新mason系列插件
更新mason、mason-lspconfig到最新版,保证插件间的兼容性。临时 workaround(若更新后仍有问题)
在gopls配置中显式禁用该字段,添加如下配置:require('lspconfig').gopls.setup({ settings = { gopls = { completion = { completionList = { itemDefaults = {} } } } } })注:优先推荐更新插件版本,此配置仅作临时应急。
验证修复
重启Neovim后打开Go文件,执行:LspInfo查看gopls是否正常附着,同时确认错误是否消失。
内容的提问来源于stack exchange,提问作者KobraKommander9
相关产品推荐
相关产品推荐

