"server_request: no handler found for" "workspace/workspaceFolders" error

I’m trying out a perl language server called PerlNavigator. I’m getting an error as soon as the language server starts and then it shuts down. Here is the debug code:

[START][2022-03-02 12:19:02] LSP logging initiated
[INFO][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:261	"Starting RPC client"	{
  args = { "/Users/stevedondley/git_repos/PerlNavigator/server/out/server.js", "--stdio" },
  cmd = "/usr/local/bin/node",
  extra = {
    cwd = "/Users/stevedondley/git_repos/mojo"
  }
}
[TRACE][2022-03-02 12:19:02] .../lua/vim/lsp.lua:892	"LSP[perlnavigator]"	"initialize_params"	{
  capabilities = {
    callHierarchy = {
      dynamicRegistration = false
    },
    textDocument = {
      codeAction = {
        codeActionLiteralSupport = {
          codeActionKind = {
            valueSet = { "", "Empty", "QuickFix", "Refactor", "RefactorExtract", "RefactorInline", "RefactorRewrite", "Source", "SourceOrganizeImports", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" }
          }
        },
        dataSupport = true,
        dynamicRegistration = false,
        resolveSupport = {
          properties = { "edit" }
        }
      },
      completion = {
        completionItem = {
          commitCharactersSupport = false,
          deprecatedSupport = false,
          documentationFormat = { "markdown", "plaintext" },
          preselectSupport = false,
          snippetSupport = false
        },
        completionItemKind = {
          valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }
        },
        contextSupport = false,
        dynamicRegistration = false
      },
      declaration = {
        linkSupport = true
      },
      definition = {
        linkSupport = true
      },
      documentHighlight = {
        dynamicRegistration = false
      },
      documentSymbol = {
        dynamicRegistration = false,
        hierarchicalDocumentSymbolSupport = true,
        symbolKind = {
          valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }
        }
      },
      hover = {
        contentFormat = { "markdown", "plaintext" },
        dynamicRegistration = false
      },
      implementation = {
        linkSupport = true
      },
      publishDiagnostics = {
        relatedInformation = true,
        tagSupport = {
          valueSet = { 1, 2 }
        }
      },
      references = {
        dynamicRegistration = false
      },
      rename = {
        dynamicRegistration = false,
        prepareSupport = true
      },
      signatureHelp = {
        dynamicRegistration = false,
        signatureInformation = {
          activeParameterSupport = true,
          documentationFormat = { "markdown", "plaintext" },
          parameterInformation = {
            labelOffsetSupport = true
          }
        }
      },
      synchronization = {
        didSave = true,
        dynamicRegistration = false,
        willSave = false,
        willSaveWaitUntil = false
      },
      typeDefinition = {
        linkSupport = true
      }
    },
    window = {
      showDocument = {
        support = false
      },
      showMessage = {
        messageActionItem = {
          additionalPropertiesSupport = false
        }
      },
      workDoneProgress = true
    },
    workspace = {
      applyEdit = true,
      configuration = true,
      symbol = {
        dynamicRegistration = false,
        hierarchicalWorkspaceSymbolSupport = true,
        symbolKind = {
          valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }
        }
      },
      workspaceEdit = {
        resourceOperations = { "rename", "create", "delete" }
      },
      workspaceFolders = true
    }
  },
  clientInfo = {
    name = "Neovim",
    version = "0.6.1"
  },
  initializationOptions = vim.empty_dict(),
  processId = 37632,
  rootPath = "/Users/stevedondley/git_repos/mojo",
  rootUri = "file:///Users/stevedondley/git_repos/mojo",
  trace = "off",
  workspaceFolders = { {
      name = "/Users/stevedondley/git_repos/mojo",
      uri = "file:///Users/stevedondley/git_repos/mojo"
    } }
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:347	"rpc.send"	{
  id = 1,
  jsonrpc = "2.0",
  method = "initialize",
  params = {
    capabilities = {
      callHierarchy = {
        dynamicRegistration = false
      },
      textDocument = {
        codeAction = {
          codeActionLiteralSupport = {
            codeActionKind = {
              valueSet = { "", "Empty", "QuickFix", "Refactor", "RefactorExtract", "RefactorInline", "RefactorRewrite", "Source", "SourceOrganizeImports", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" }
            }
          },
          dataSupport = true,
          dynamicRegistration = false,
          resolveSupport = {
            properties = { "edit" }
          }
        },
        completion = {
          completionItem = {
            commitCharactersSupport = false,
            deprecatedSupport = false,
            documentationFormat = { "markdown", "plaintext" },
            preselectSupport = false,
            snippetSupport = false
          },
          completionItemKind = {
            valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }
          },
          contextSupport = false,
          dynamicRegistration = false
        },
        declaration = {
          linkSupport = true
        },
        definition = {
          linkSupport = true
        },
        documentHighlight = {
          dynamicRegistration = false
        },
        documentSymbol = {
          dynamicRegistration = false,
          hierarchicalDocumentSymbolSupport = true,
          symbolKind = {
            valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }
          }
        },
        hover = {
          contentFormat = { "markdown", "plaintext" },
          dynamicRegistration = false
        },
        implementation = {
          linkSupport = true
        },
        publishDiagnostics = {
          relatedInformation = true,
          tagSupport = {
            valueSet = { 1, 2 }
          }
        },
        references = {
          dynamicRegistration = false
        },
        rename = {
          dynamicRegistration = false,
          prepareSupport = true
        },
        signatureHelp = {
          dynamicRegistration = false,
          signatureInformation = {
            activeParameterSupport = true,
            documentationFormat = { "markdown", "plaintext" },
            parameterInformation = {
              labelOffsetSupport = true
            }
          }
        },
        synchronization = {
          didSave = true,
          dynamicRegistration = false,
          willSave = false,
          willSaveWaitUntil = false
        },
        typeDefinition = {
          linkSupport = true
        }
      },
      window = {
        showDocument = {
          support = false
        },
        showMessage = {
          messageActionItem = {
            additionalPropertiesSupport = false
          }
        },
        workDoneProgress = true
      },
      workspace = {
        applyEdit = true,
        configuration = true,
        symbol = {
          dynamicRegistration = false,
          hierarchicalWorkspaceSymbolSupport = true,
          symbolKind = {
            valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }
          }
        },
        workspaceEdit = {
          resourceOperations = { "rename", "create", "delete" }
        },
        workspaceFolders = true
      }
    },
    clientInfo = {
      name = "Neovim",
      version = "0.6.1"
    },
    initializationOptions = vim.empty_dict(),
    processId = 37632,
    rootPath = "/Users/stevedondley/git_repos/mojo",
    rootUri = "file:///Users/stevedondley/git_repos/mojo",
    trace = "off",
    workspaceFolders = { {
        name = "/Users/stevedondley/git_repos/mojo",
        uri = "file:///Users/stevedondley/git_repos/mojo"
      } }
  }
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:454	"rpc.receive"	{
  id = 1,
  jsonrpc = "2.0",
  result = {
    capabilities = {
      completionProvider = {
        resolveProvider = false,
        triggerCharacters = { "$", "@", "%", "-", ">", ":" }
      },
      definitionProvider = true,
      documentFormattingProvider = true,
      documentRangeFormattingProvider = true,
      documentSymbolProvider = true,
      hoverProvider = true,
      textDocumentSync = 2,
      workspace = {
        workspaceFolders = {
          supported = true
        }
      },
      workspaceSymbolProvider = true
    }
  }
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:347	"rpc.send"	{
  jsonrpc = "2.0",
  method = "initialized",
  params = vim.empty_dict()
}
[DEBUG][2022-03-02 12:19:02] .../lua/vim/lsp.lua:921	"LSP[perlnavigator]"	"server_capabilities"	{
  completionProvider = {
    resolveProvider = false,
    triggerCharacters = { "$", "@", "%", "-", ">", ":" }
  },
  definitionProvider = true,
  documentFormattingProvider = true,
  documentRangeFormattingProvider = true,
  documentSymbolProvider = true,
  hoverProvider = true,
  textDocumentSync = 2,
  workspace = {
    workspaceFolders = {
      supported = true
    }
  },
  workspaceSymbolProvider = true
}
[INFO][2022-03-02 12:19:02] .../lua/vim/lsp.lua:922	"LSP[perlnavigator]"	"initialized"	{
  resolved_capabilities = {
    call_hierarchy = false,
    code_action = false,
    code_lens = false,
    code_lens_resolve = false,
    completion = true,
    declaration = false,
    document_formatting = true,
    document_highlight = false,
    document_range_formatting = true,
    document_symbol = true,
    execute_command = false,
    find_references = false,
    goto_definition = true,
    hover = true,
    implementation = false,
    rename = false,
    signature_help = false,
    signature_help_trigger_characters = {},
    text_document_did_change = 2,
    text_document_open_close = true,
    text_document_save = true,
    text_document_save_include_text = false,
    text_document_will_save = false,
    text_document_will_save_wait_until = false,
    type_definition = false,
    workspace_folder_properties = {
      changeNotifications = false,
      supported = true
    },
    workspace_symbol = true
  }
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:347	"rpc.send"	{
  jsonrpc = "2.0",
  method = "textDocument/didOpen",
  params = {
    textDocument = {
      languageId = "perl",
      text = "\n",
      uri = "file:///Users/stevedondley/git_repos/mojo/test.pl",
      version = 0
    }
  }
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:454	"rpc.receive"	{
  id = 0,
  jsonrpc = "2.0",
  method = "client/registerCapability",
  params = {
    registrations = { {
        id = "9f1be352-8856-4135-ba1b-119a7f5ca1ea",
        method = "workspace/didChangeConfiguration",
        registerOptions = vim.empty_dict()
      } }
  }
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:454	"rpc.receive"	{
  id = 1,
  jsonrpc = "2.0",
  method = "client/registerCapability",
  params = {
    registrations = { {
        id = "ec53bd8e-2cd0-4b3e-b108-3df754259056",
        method = "workspace/didChangeWorkspaceFolders",
        registerOptions = vim.empty_dict()
      } }
  }
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:454	"rpc.receive"	{
  id = 2,
  jsonrpc = "2.0",
  method = "workspace/configuration",
  params = {
    items = { {
        scopeUri = "file:///Users/stevedondley/git_repos/mojo/test.pl",
        section = "perlnavigator"
      } }
  }
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:454	"rpc.receive"	{
  id = 3,
  jsonrpc = "2.0",
  method = "workspace/configuration",
  params = {
    items = { {
        scopeUri = "file:///Users/stevedondley/git_repos/mojo/test.pl",
        section = "perlnavigator"
      } }
  }
}
[TRACE][2022-03-02 12:19:02] .../lua/vim/lsp.lua:745	"server_request"	"client/registerCapability"	{
  registrations = { {
      id = "9f1be352-8856-4135-ba1b-119a7f5ca1ea",
      method = "workspace/didChangeConfiguration",
      registerOptions = vim.empty_dict()
    } }
}
[TRACE][2022-03-02 12:19:02] .../lua/vim/lsp.lua:748	"server_request: found handler for"	"client/registerCapability"
[TRACE][2022-03-02 12:19:02] ...lsp/handlers.lua:437	"default_handler"	"client/registerCapability"	{
  ctx = '{\n  client_id = 1,\n  method = "client/registerCapability"\n}',
  result = {
    registrations = { {
        id = "9f1be352-8856-4135-ba1b-119a7f5ca1ea",
        method = "workspace/didChangeConfiguration",
        registerOptions = vim.empty_dict()
      } }
  }
}
[WARN][2022-03-02 12:19:02] ...lsp/handlers.lua:109	"The language server perlnavigator triggers a registerCapability handler despite dynamicRegistration set to false. Report upstream, this warning is harmless"
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:464	"server_request: callback result"	{
  result = vim.NIL,
  status = true
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:347	"rpc.send"	{
  id = 0,
  jsonrpc = "2.0",
  result = vim.NIL
}
[TRACE][2022-03-02 12:19:02] .../lua/vim/lsp.lua:745	"server_request"	"client/registerCapability"	{
  registrations = { {
      id = "ec53bd8e-2cd0-4b3e-b108-3df754259056",
      method = "workspace/didChangeWorkspaceFolders",
      registerOptions = vim.empty_dict()
    } }
}
[TRACE][2022-03-02 12:19:02] .../lua/vim/lsp.lua:748	"server_request: found handler for"	"client/registerCapability"
[TRACE][2022-03-02 12:19:02] ...lsp/handlers.lua:437	"default_handler"	"client/registerCapability"	{
  ctx = '{\n  client_id = 1,\n  method = "client/registerCapability"\n}',
  result = {
    registrations = { {
        id = "ec53bd8e-2cd0-4b3e-b108-3df754259056",
        method = "workspace/didChangeWorkspaceFolders",
        registerOptions = vim.empty_dict()
      } }
  }
}
[WARN][2022-03-02 12:19:02] ...lsp/handlers.lua:109	"The language server perlnavigator triggers a registerCapability handler despite dynamicRegistration set to false. Report upstream, this warning is harmless"
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:464	"server_request: callback result"	{
  result = vim.NIL,
  status = true
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:347	"rpc.send"	{
  id = 1,
  jsonrpc = "2.0",
  result = vim.NIL
}
[TRACE][2022-03-02 12:19:02] .../lua/vim/lsp.lua:745	"server_request"	"workspace/configuration"	{
  items = { {
      scopeUri = "file:///Users/stevedondley/git_repos/mojo/test.pl",
      section = "perlnavigator"
    } }
}
[TRACE][2022-03-02 12:19:02] .../lua/vim/lsp.lua:748	"server_request: found handler for"	"workspace/configuration"
[TRACE][2022-03-02 12:19:02] ...lsp/handlers.lua:437	"default_handler"	"workspace/configuration"	{
  ctx = '{\n  client_id = 1,\n  method = "workspace/configuration"\n}',
  result = {
    items = { {
        scopeUri = "file:///Users/stevedondley/git_repos/mojo/test.pl",
        section = "perlnavigator"
      } }
  }
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:464	"server_request: callback result"	{
  result = { vim.NIL },
  status = true
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:347	"rpc.send"	{
  id = 2,
  jsonrpc = "2.0",
  result = { vim.NIL }
}
[TRACE][2022-03-02 12:19:02] .../lua/vim/lsp.lua:745	"server_request"	"workspace/configuration"	{
  items = { {
      scopeUri = "file:///Users/stevedondley/git_repos/mojo/test.pl",
      section = "perlnavigator"
    } }
}
[TRACE][2022-03-02 12:19:02] .../lua/vim/lsp.lua:748	"server_request: found handler for"	"workspace/configuration"
[TRACE][2022-03-02 12:19:02] ...lsp/handlers.lua:437	"default_handler"	"workspace/configuration"	{
  ctx = '{\n  client_id = 1,\n  method = "workspace/configuration"\n}',
  result = {
    items = { {
        scopeUri = "file:///Users/stevedondley/git_repos/mojo/test.pl",
        section = "perlnavigator"
      } }
  }
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:464	"server_request: callback result"	{
  result = { vim.NIL },
  status = true
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:347	"rpc.send"	{
  id = 3,
  jsonrpc = "2.0",
  result = { vim.NIL }
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:454	"rpc.receive"	{
  id = 4,
  jsonrpc = "2.0",
  method = "workspace/workspaceFolders"
}
[TRACE][2022-03-02 12:19:02] .../lua/vim/lsp.lua:745	"server_request"	"workspace/workspaceFolders"	nil
[WARN][2022-03-02 12:19:02] .../lua/vim/lsp.lua:751	"server_request: no handler found for"	"workspace/workspaceFolders"
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:464	"server_request: callback result"	{
  err = {
    code = -32601,
    message = "MethodNotFound",
    <metatable> = {
      __tostring = <function 1>
    }
  },
  status = true
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:347	"rpc.send"	{
  error = {
    code = -32601,
    message = "MethodNotFound",
    <metatable> = {
      __tostring = <function 1>
    }
  },
  id = 4,
  jsonrpc = "2.0"
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:454	"rpc.receive"	{
  id = 5,
  jsonrpc = "2.0",
  method = "workspace/workspaceFolders"
}
[TRACE][2022-03-02 12:19:02] .../lua/vim/lsp.lua:745	"server_request"	"workspace/workspaceFolders"	nil
[WARN][2022-03-02 12:19:02] .../lua/vim/lsp.lua:751	"server_request: no handler found for"	"workspace/workspaceFolders"
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:464	"server_request: callback result"	{
  err = {
    code = -32601,
    message = "MethodNotFound",
    <metatable> = {
      __tostring = <function 1>
    }
  },
  status = true
}
[DEBUG][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:347	"rpc.send"	{
  error = {
    code = -32601,
    message = "MethodNotFound",
    <metatable> = {
      __tostring = <function 1>
    }
  },
  id = 5,
  jsonrpc = "2.0"
}
[ERROR][2022-03-02 12:19:02] .../vim/lsp/rpc.lua:420	"rpc"	"/usr/local/bin/node"	"stderr"	"/Users/stevedondley/git_repos/PerlNavigator/server/node_modules/vscode-jsonrpc/lib/common/connection.js:477\n                        responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));\n                                               ^\n\nResponseError: MethodNotFound\n    at handleResponse (/Users/stevedondley/git_repos/PerlNavigator/server/node_modules/vscode-jsonrpc/lib/common/connection.js:477:48)\n    at processMessageQueue (/Users/stevedondley/git_repos/PerlNavigator/server/node_modules/vscode-jsonrpc/lib/common/connection.js:292:17)\n    at Immediate.<anonymous> (/Users/stevedondley/git_repos/PerlNavigator/server/node_modules/vscode-jsonrpc/lib/common/connection.js:276:13)\n    at processImmediate (node:internal/timers:466:21) {\n  code: -32601,\n  data: undefined\n}\n\nNode.js v17.6.0\n"

Update to the nightly, we added support for workspaceFolders after 0.6.1

1 Like