🐞 VSCode extension can't connect to the LSP server
What is the issue?
I just installed the VSCode extension v0.3.2 but the extension crashes on me.
VSCode info:
Version: 1.69.2 Commit: 3b889b090b5ad5793f524b5d1d39fda662b96a2a Date: 2022-07-18T16:12:57.074Z (1 wk ago) Electron: 18.3.5 Chromium: 100.0.4896.160 Node.js: 16.13.2 V8: 10.0.139.17-electron.0 OS: Darwin x64 21.6.0
Log output
{"level":"info","time":"2022-07-29T15:28:36+02:00","caller":"/home/runner/work/dagger/dagger/cmd/dagger/cmd/lsp.go:33","message":"Running Dagger CUE Language Server"}
[Error - 3:28:36 PM] Server initialization failed.
TypeError: Cannot read properties of null (reading 'capabilities')
at LanguageClient.doInitialize (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:768:24)
at async LanguageClient.start (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:705:13)
at async startClient (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/out/extension.js:72:9)
[Error - 3:28:36 PM] dagger language server client: couldn't create connection to server.
TypeError: Cannot read properties of null (reading 'capabilities')
at LanguageClient.doInitialize (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:768:24)
at async LanguageClient.start (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:705:13)
at async startClient (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/out/extension.js:72:9)
[Info - 3:28:38 PM] Connection to server got closed. Server will restart.
{"level":"info","time":"2022-07-29T15:28:38+02:00","caller":"/home/runner/work/dagger/dagger/cmd/dagger/cmd/lsp.go:33","message":"Running Dagger CUE Language Server"}
[Error - 3:28:38 PM] Server initialization failed.
TypeError: Cannot read properties of null (reading 'capabilities')
at LanguageClient.doInitialize (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:768:24)
at async LanguageClient.start (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:705:13)
[Error - 3:28:38 PM] dagger language server client: couldn't create connection to server.
TypeError: Cannot read properties of null (reading 'capabilities')
at LanguageClient.doInitialize (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:768:24)
at async LanguageClient.start (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:705:13)
[Error - 3:28:38 PM] Restarting server failed
TypeError: Cannot read properties of null (reading 'capabilities')
at LanguageClient.doInitialize (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:768:24)
at async LanguageClient.start (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:705:13)
[Info - 3:28:40 PM] Connection to server got closed. Server will restart.
{"level":"info","time":"2022-07-29T15:28:40+02:00","caller":"/home/runner/work/dagger/dagger/cmd/dagger/cmd/lsp.go:33","message":"Running Dagger CUE Language Server"}
[Error - 3:28:40 PM] Server initialization failed.
TypeError: Cannot read properties of null (reading 'capabilities')
at LanguageClient.doInitialize (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:768:24)
at async LanguageClient.start (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:705:13)
[Error - 3:28:40 PM] dagger language server client: couldn't create connection to server.
TypeError: Cannot read properties of null (reading 'capabilities')
at LanguageClient.doInitialize (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:768:24)
at async LanguageClient.start (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:705:13)
[Error - 3:28:40 PM] Restarting server failed
TypeError: Cannot read properties of null (reading 'capabilities')
at LanguageClient.doInitialize (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:768:24)
at async LanguageClient.start (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:705:13)
[Info - 3:28:42 PM] Connection to server got closed. Server will restart.
{"level":"info","time":"2022-07-29T15:28:42+02:00","caller":"/home/runner/work/dagger/dagger/cmd/dagger/cmd/lsp.go:33","message":"Running Dagger CUE Language Server"}
[Error - 3:28:42 PM] Server initialization failed.
TypeError: Cannot read properties of null (reading 'capabilities')
at LanguageClient.doInitialize (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:768:24)
at async LanguageClient.start (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:705:13)
[Error - 3:28:42 PM] dagger language server client: couldn't create connection to server.
TypeError: Cannot read properties of null (reading 'capabilities')
at LanguageClient.doInitialize (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:768:24)
at async LanguageClient.start (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:705:13)
[Error - 3:28:42 PM] Restarting server failed
TypeError: Cannot read properties of null (reading 'capabilities')
at LanguageClient.doInitialize (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:768:24)
at async LanguageClient.start (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:705:13)
[Info - 3:28:44 PM] Connection to server got closed. Server will restart.
{"level":"info","time":"2022-07-29T15:28:44+02:00","caller":"/home/runner/work/dagger/dagger/cmd/dagger/cmd/lsp.go:33","message":"Running Dagger CUE Language Server"}
[Error - 3:28:44 PM] Server initialization failed.
TypeError: Cannot read properties of null (reading 'capabilities')
at LanguageClient.doInitialize (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:768:24)
at async LanguageClient.start (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:705:13)
[Error - 3:28:44 PM] dagger language server client: couldn't create connection to server.
TypeError: Cannot read properties of null (reading 'capabilities')
at LanguageClient.doInitialize (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:768:24)
at async LanguageClient.start (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:705:13)
[Error - 3:28:44 PM] Restarting server failed
TypeError: Cannot read properties of null (reading 'capabilities')
at LanguageClient.doInitialize (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:768:24)
at async LanguageClient.start (/Users/ringods/.vscode/extensions/dagger.dagger-0.3.2/node_modules/vscode-languageclient/lib/common/client.js:705:13)
[Error - 3:28:46 PM] The dagger language server server crashed 5 times in the last 3 minutes. The server will not be restarted. See the output for more information.
Steps to reproduce
Install the extension in VSCode, enable it and you get some error notifications in the lower right. Going to the Output pane, you see the output mentioned above.
Dagger version
dagger 0.2.27 (954664e6d) darwin/amd64
OS version
macOS 12.5
Hi @ringods,
- Can you please try to run:
dagger cuelsp, does it work ? - Is your dagger CLI named
dagger, and accessible to your PATH ?
Can you also specify how you open the file / folder ? (vscode command you type in your shell). For example: code . ?
Ok, I have a repro. Working on it ! For now, please try to open with a code . or a folder. Can you please confirm it works ok in this case ?
@grouville using code . from the project folder at hand indeed works.
I usually launch VSCode using the application icon in my macOS Dock. This reopens the last project which was open in the previous run, and I either select File -> Open or use Ctrl-R to select from the list of previous projects or workspaces.
Okay I have understand the issue!
Our is currently set to work with VsCode workspace, see initWorkspace for details.
The problem is that when you open a file using code file.cue, there is no workspace opened.
We have 2 solutions (short & long term):
- Explicit this error and ask user to open his file as a folder using
code .for instance - Update LSP to handle single file opened, I'm not sure we can use full feature in that case, specially imports or stuff like this.
@TomChv to be sure you understand my usage, I'm not opening single files. When I mentioned File -> Open in my previous comment, I'm always opening a folder as my workspace.
Now it might be the case on Linux that users launch VSCode using code . or code <somePath>, but my assumption is that most macOS users just double click the VSCode application icon, or via Spotlight search (which I use quite often).
When I mentioned File -> Open in my previous comment, I'm always opening a folder as my workspace
Oh okay, so it's quite different, I'm on MacOS too but I didn't encounter this issue during my tests :/ I have opened a PR that notice users that he should always open a file.
On your case, I'm not sure what his the root cause, I'll continue and try to find a way. Maybe it's because you open multiple workspaces?
@TomChv the problem can indeed be narrowed down to Multi-root Workspaces in VSCode.
When I open a single folder workspace, the extension works correctly. When I use a multi-root workspace, I can reproduce the problem every time.
Multi-Root Workspaces is a core feature of VSCode and I use that quite often. Please try to get this extension to work with such a setup. 🙏🏻