You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用textDocument/didOpen时clangd返回"method not found"的原因排查

问题原因及解决办法

核心问题:你错误地把textDocument/didOpen作为带id的请求发送了,但它是LSP规范里的通知类型方法,不需要也不能携带id字段。

LSP中的方法分两种:

  • 请求(Request):需要服务端返回响应,必须包含id字段
  • 通知(Notification):不需要服务端响应,绝对不能带id

textDocument/didOpen属于通知,clangd收到带id的该请求时,会认为这是一个不存在的请求方法,因此返回-32601 method not found。

修正后的请求报文

Content-Length: 1759

{
  "jsonrpc": "2.0",
  "method": "textDocument/didOpen",
  "params": {
    "textDocument": {
      "languageId": "cpp",
      "text": "file content...",
      "uri": "file://src/main.cpp",
      "version": 1
    }
  }
}

额外检查点

  1. 确认初始化阶段clangd返回的serverCapabilities中包含textDocumentSync(didOpen属于文本同步的一部分,初始化正常的话一般已支持)
  2. 确保Content-Length的数值与JSON正文的字节数完全匹配,避免解析错误

内容的提问来源于stack exchange,提问作者Lasersköld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:25:41