next-ls icon indicating copy to clipboard operation
next-ls copied to clipboard

Windows Support

Open RoboZoom opened this issue 11 months ago • 35 comments

I attempted to enable NextLS via the VSCode Extension, however the client was not created.

The first question is, in a general sense, is NextLS viable in windows?

If NextLS supports windows, but the initialization script is unsupported in windows, then there is an issue packaging and initializing it for windows users of VSCode.

RoboZoom avatar Jul 08 '23 17:07 RoboZoom

Trying to use NextLS in WSL:

[Error - 9:56:36 PM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 9:56:36 PM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/cmo/.vscode-server/extensions/elixir-tools.elixir-tools-0.3.0/dist/extension.js:2:96701)
	at _.stop (/home/cmo/.vscode-server/extensions/elixir-tools.elixir-tools-0.3.0/dist/extension.js:2:96282)
	at _.stop (/home/cmo/.vscode-server/extensions/elixir-tools.elixir-tools-0.3.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/cmo/.vscode-server/extensions/elixir-tools.elixir-tools-0.3.0/dist/extension.js:2:102789)
	at processTicksAndRejections (node:internal/process/task_queues:96:5)

Trying to use NextLS on Windows:

[Error - 9:58:50 PM] NextLS client: couldn't create connection to server.
Launching server using command c:\Users\simon\scoop\apps\vscode\1.80.1\data\extensions\elixir-tools.elixir-tools-0.3.0\bin\nextls failed. Error: spawn c:\Users\simon\scoop\apps\vscode\1.80.1\data\extensions\elixir-tools.elixir-tools-0.3.0\bin\nextls ENOENT

simonmcconnell avatar Jul 19 '23 14:07 simonmcconnell

windows is very weird, when dealing with dev tools.

apoorv-2204 avatar Aug 09 '23 16:08 apoorv-2204

I now have windows binaries uploaded to the releases, but I still use a bash script so I'll need to convert that to a bat script or might not need it at all.

Should be good to test on windows after that

mhanberg avatar Aug 09 '23 16:08 mhanberg

https://github.com/elixir-tools/next-ls/pull/144 - now that binaries are getting downloaded - will it work in WSL?

cvkmohan avatar Aug 14 '23 14:08 cvkmohan

@cvkmohan i believe so. @zachallaun has gotten it working in WSL2 i believe, but he needed to update to a more recent Ubuntu version. he tried on 20.XX and the version of glibc was too old.

mhanberg avatar Aug 14 '23 15:08 mhanberg

I can confirm that on WSL2, with Ubuntu 22.04, it is working. It downloaded the executable.
Thanks a lot. BTW, I am a big fan of your Temple library.

One question: what is the correct place for the code completion of definitions? I mean - when you type defmodule or def end automatically appearing. In this extension or code snippets?

cvkmohan avatar Aug 14 '23 16:08 cvkmohan

Completions are not implemented yet, but are coming up soon on the roadmap.

BTW, I am a big fan of your Temple library.

That's awesome to hear! The https://www.elixir-tools.dev is built with Temple.

marking this comment as off topic tho, to keep the issue focused. You can open a github discussion on the Org for general questions or join the discord invite link

mhanberg avatar Aug 14 '23 16:08 mhanberg

Hey friends, tried installing it on windows and getting:

2023-11-01 12:45:45.869 [error] Error: Download failed (https://github.com/elixir-tools/next-ls/releases/latest/download/next_ls_windows_amd64, status=404)
    at c:\Users\serafeim\.vscode\extensions\elixir-tools.elixir-tools-0.11.0\dist\extension.js:2:432487
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at l.force (c:\Users\serafeim\.vscode\extensions\elixir-tools.elixir-tools-0.11.0\dist\extension.js:2:432228)
    at c:\Users\serafeim\.vscode\extensions\elixir-tools.elixir-tools-0.11.0\dist\extension.js:2:431445
    at e.activate (c:\Users\serafeim\.vscode\extensions\elixir-tools.elixir-tools-0.11.0\dist\extension.js:2:430807)
    at v.n (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:125:6205)
    at v.m (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:125:6168)
    at v.l (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:125:5625)
2023-11-01 12:49:48.601 [info] ExtensionService#_doActivateExtension vscode.simple-browser, startup: false, activationEvent: 'onOpenExternalUri:https'

Plase notice that the correct filename is next_ls_windows_amd64.exe !

spapas avatar Nov 01 '23 10:11 spapas

Yes, like @spapas mentioned

2024-01-19 09:20:06.744 [info] ExtensionService#_doActivateExtension elixir-tools.elixir-tools, startup: false, activationEvent: 'onLanguage:elixir'
2024-01-19 09:20:10.850 [error] Activating extension elixir-tools.elixir-tools failed due to an error:
2024-01-19 09:20:10.850 [error] Error: Download failed (https://github.com/elixir-tools/next-ls/releases/latest/download/next_ls_windows_amd64, status=404)
    at c:\Users\chgeuer\.vscode\extensions\elixir-tools.elixir-tools-0.12.1\dist\extension.js:2:432487
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
  • Tool tries to fetch https://github.com/elixir-tools/next-ls/releases/latest/download/next_ls_windows_amd64
  • Correct (I guess) would be https://github.com/elixir-tools/next-ls/releases/download/latest/next_ls_windows_amd64.exe

chgeuer avatar Jan 19 '24 08:01 chgeuer

I tried all I could - but - had to come back here. After reinstalling wsl2 on my system, next-ls stopped working. image glibc is 2.35 - and I tried all troubleshooting in https://www.elixir-tools.dev/docs/next-ls/troubleshooting/

  1. No logs are getting recorded.
  2. I have pasted vscode Output tab error in the above image.
  3. When I start nextls independently and run it in tcp mode it is working fine.

However, when I install the latest vscode extension and reopen the download is not happening into /.cache/elixir-tools directory. Even if I have downloaded the executable manually and placed in the directory - vscode extension is not picking it up - and - autostart is not working.

cvkmohan avatar Feb 28 '24 13:02 cvkmohan

I'll try and get windows installed today and try it out.

Sorry about that!

mhanberg avatar Feb 28 '24 18:02 mhanberg

My frustration in the question is more about - It was working earlier - not working now - what did I miss? I installed lexical-vscode package and it shows a message that it is downloading lexical executable. I am not getting the same message with elixir-tools.vscode package. Problem might be mostly there. Unable to overwrite older version? Thinking aloud... if it helps. You are doing amazing work. We should be thankful - you should not be sorry!

cvkmohan avatar Feb 28 '24 18:02 cvkmohan

It was working earlier - not working now - what did I miss?

There is a bug in the auto updater that I fixed yesterday, but if you delete Next LS and reopen VSCode, it should prompt you to install it.

I just tested on my Mac and it worked, so I'm not really sure what is different about running VSCode on Windows using WSL2, which will require me to install and debug.

You are doing amazing work. We should be thankful - you should not be sorry!

🙇

mhanberg avatar Feb 28 '24 19:02 mhanberg

That updater is in 0.19.1 and that is not yet released?

I tried reinstalling.

  1. Removed elixir-tools.vscode from vscode
  2. rm -rf ~/.cache/elixir-tools
  3. Restart vscode
  4. Install elixir-tols.vscode Even on restart, it is not prompting to download. Socket Closed is the message in Output window.

cvkmohan avatar Feb 28 '24 19:02 cvkmohan

That updater is in 0.19.1 and that is not yet released?

Correct, but that should only effect an existing Next LS installation trying to update itself.

Thanks for the repro steps.

Can you also include your Windows versions and WSL2 information? like what distro do you have installed with WSL2, also VSCode version

mhanberg avatar Feb 28 '24 19:02 mhanberg

Windows 11. WSL2 - Ubuntu 22.04

cvkmohan avatar Feb 28 '24 19:02 cvkmohan

Thanks, downloading as ISO now

mhanberg avatar Feb 28 '24 19:02 mhanberg

Okay, sort of bad-ish news...

Works on my machine 😅.

Link to a video recording of me installing the extension for the first time: https://f005.backblazeb2.com/file/elixir-tools/elixir-tools-wsl-test.mp4

Timeline is basically

  • install extension
  • it doesn't work because i hadn't restarted vscode since installing elixir, so it wasn't in the path
  • restart, it fails because i had never run mix local.hex --force on this elixir install
  • i run that and restart
  • it boots and prompts me to install deps, i click yes (this is a new feature in 0.19.1)
  • it installs them and then continues on and works as expected

mhanberg avatar Feb 29 '24 18:02 mhanberg

Thanks. You took a lot of effort. One difference I could spot is - you are using nix for everything - and - I am using asdf for elixir. Not sure if it makes any difference. Another thing to ponder is the burrito file is not there in the local/.hex folder. I guess some caching somewhere in my system with the old version and is not getting deleted. I will come back to you when I find something. Till then, please ignore this and move on. Again, thanks a lot for the prompt response and huge time you put in.

cvkmohan avatar Feb 29 '24 18:02 cvkmohan

it did actually crash after i let it sit there for a minute, investigating that now, but seems orthogonal to your issue.

I don't think asdf vs nix will make a difference for yours not even prompting you to install it

Another thing to ponder is the burrito file is not there in the local/.hex folder.

i'm not sure what you mean here

I guess some caching somewhere in my system with the old version and is not getting deleted.

you can uninstall from the command palette (search elixir tools and it will be there), then restart to see if it prompts you to download

Till then, please ignore this and move on.

no 😎

mhanberg avatar Feb 29 '24 18:02 mhanberg

Interestingly, when I try to uninstall from the command palette, it gives an error message that Failed to uninstall NextLS from nextls image However, when I uninstall from Extensions tab, it is getting removed without any warnings/notices. image

Does that trigger anything?

cvkmohan avatar Feb 29 '24 18:02 cvkmohan

Hmm, could you audit your settings to see what the value of elixir-tools.nextLS.installationDirectory is?

mhanberg avatar Feb 29 '24 18:02 mhanberg

It was showing empty. I clicked on the gear icon and asked it to reset it. ~/.cache/elixir-tools/nextls/bin/ is what it is. After that I did a couple of restarts - but same status. Socket closed before connection is established.

cvkmohan avatar Feb 29 '24 19:02 cvkmohan

Can you confirm is that directory exists at all?

mhanberg avatar Feb 29 '24 19:02 mhanberg

No. The directory does not exist.

cvkmohan avatar Feb 29 '24 19:02 cvkmohan

As an experiment, can you manually create that directory and then restart VScode to see if it tries to install it?

mhanberg avatar Feb 29 '24 19:02 mhanberg

No. nothing happened. This is the full error log.

[Error - 1:27:21 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:21 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:21 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:21 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Info  - 1:27:21 AM] Connection to server got closed. Server will restart.
true
[Error - 1:27:21 AM] Server initialization failed.
  Message: Socket closed before the connection was established
  Code: -32099 
[Error - 1:27:21 AM] NextLS client: couldn't create connection to server.
  Message: Socket closed before the connection was established
  Code: -32099 
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: startFailed
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: startFailed
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Server initialization failed.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] NextLS client: couldn't create connection to server.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] Restarting server failed
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Info  - 1:27:22 AM] Connection to server got closed. Server will restart.
true
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Server initialization failed.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] NextLS client: couldn't create connection to server.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] Restarting server failed
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Info  - 1:27:22 AM] Connection to server got closed. Server will restart.
true
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Server initialization failed.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] NextLS client: couldn't create connection to server.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] Restarting server failed
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Info  - 1:27:22 AM] Connection to server got closed. Server will restart.
true
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Server initialization failed.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] NextLS client: couldn't create connection to server.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] Restarting server failed
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] The NextLS server crashed 5 times in the last 3 minutes. The server will not be restarted. See the output for more information.

cvkmohan avatar Feb 29 '24 19:02 cvkmohan

can you check the permissions on that directory?

mhanberg avatar Feb 29 '24 20:02 mhanberg

image

cvkmohan avatar Feb 29 '24 20:02 cvkmohan

and there is nothing in there in any of the dirs?

mhanberg avatar Feb 29 '24 20:02 mhanberg