mason-org / mason-org/mason.nvim

vtsls / pyright is not referring to correct place

Open
#1,997 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

package-issue
Dominant language
Lua
Stars
10.5k
Forks
338
PR merge metrics
No merged PRs in 30d

Description

### I've searched open issues for similar requests

- [x] Yes

### I've manually reviewed logs to find potential errors

- [x] Yes

### I've recently downloaded the latest plugin version of mason.nvim

- [x] Yes

### Problem description

today, i try to install fresh LazyVim in my wsl arch linux, its working well, but when i try to install vtsls with mason (lazyextra, typescript), its give me error like this, this also give error when try to use **pyright**

- vtsls
```shell
[ERROR][2025-07-01 12:04:05] ...p/_transport.lua:36 "rpc" "vtsls" "stderr" "node:internal/modules/cjs/loader:1408\n throw err;\n ^\n\nError: Cannot find module
'/home/ah/.local/share/nvim/mason/@vtsls/language-server/bin/vtsls.js'\n
at Module._resolveFilename (node:internal/modules/cjs/loader:1405:15 undefined)\n
at defaultResolveImpl .defaultResolveImpl (node:internal/modules/cjs/loader:1061:19 undefined)\n
at resolveForCJSWithHooks .resolveForCJSWithHooks (node:internal/modules/cjs/loader:1066:22 undefined)\n
at Module._load (node:internal/modules/cjs/loader:1215:37 undefined)\n
at TracingChannel.traceSync (node:diagnostics_channel:322:14 undefined)\n
at wrapModuleLoad .wrapModuleLoad (node:internal/modules/cjs/loader:235:24 undefined)\n
at Module.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:152:5 undefined)\n at node:internal/main/run_main_module:33:47 {\n code: 'MODULE_NOT_FOUND',\n requireStack: []\n}\n\nNode.js v24.2.0\n"
```

- pyright
```shell

[ERROR][2025-07-29 09:29:19] ...p/_transport.lua:36 "rpc" "pyright-langserver" "stderr"
"node:internal/modules/cjs/loader:1372\n throw err;\n ^\n\nError: Cannot find module
'/home/ah/.local/share/nvim/mason/pyright/langserver.index.js'\n
at Module._resolveFilename (node:internal/modules/cjs/loader:1369:15 undefined)\n
at defaultResolveImpl .defaultResolveImpl (node:internal/modules/cjs/loader:1025:19 undefined)\n
at resolveForCJSWithHooks .resolveForCJSWithHooks (node:internal/modules/cjs/loader:1030:22 undefined)\n
at Module._load (node:internal/modules/cjs/loader:1179:37 undefined)\n
at TracingChannel.traceSync (node:diagnostics_channel:322:14 undefined)\n
at wrapModuleLoad .wrapModuleLoad (node:internal/modules/cjs/loader:235:24 undefined)\n
at Module.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:152:5 undefined)\n at node:internal/main/run_main_module:33:47 {\n code: 'MODULE_NOT_FOUND',\n requireStack: []\n}\n\nNode.js v24.4.1\n"

```

i know script inside **bin** is linked to real binary for every package ( at least for this npm installed package).

> [!NOTE]
> I am not sure if it fixed in latest version, should i report to lazyvim instead? but i believe it from mason config
>
> mason.nvim ~
> - ⚠️ WARNING mason.nvim version v1.11.0
> - ADVICE:
> - The latest version of mason.nvim is: v2.0.1

## Solution I Found
to solve this **vtsls** / **pyright** cant find module

```shell
[ERROR][2025-07-29 09:29:19] ...p/_transport.lua:36 "rpc" "pyright-langserver" "stderr"
"node:internal/modules/cjs/loader:1372\n throw err;\n ^\n\nError: Cannot find module
'/home/ah/.local/share/nvim/mason/pyright/langserver.index.js'\n
at Module._resolveFilename (node:internal/modules/cjs/loader:1369:15 undefined)\n
at defaultResolveImpl .defaultResolveImpl (node:internal/modules/cjs/loader:1025:19 undefined)\n
at resolveForCJSWithHooks .resolveForCJSWithHooks (node:internal/modules/cjs/loader:1030:22 undefined)\n
at Module._load (node:internal/modules/cjs/loader:1179:37 undefined)\n
at TracingChannel.traceSync (node:diagnostics_channel:322:14 undefined)\n
at wrapModuleLoad .wrapModuleLoad (node:internal/modules/cjs/loader:235:24 undefined)\n
at Module.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:152:5 undefined)\n at node:internal/main/run_main_module:33:47 {\n code: 'MODULE_NOT_FOUND',\n requireStack: []\n}\n\nNode.js v24.4.1\n"

Formatted by https://st.elmah.io

```

you need change **basedir** variable to use `readlink -f` because its linked and using only `echo $0` will outputing _current folder_

```shell

//from
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")

// to
basedir=$(dirname $(readlink -f $0) | sed -e 's,\\,/,g')
```

```shell
~/.local/share/nvim/mason/bin ⌚ 10:59:19
$ ls -lar
total 36
lrwxrwxrwx 1 ah ah 55 Jul 29 09:22 stylua -> /home/ah/.local/share/nvim/mason/packages/stylua/stylua
lrwxrwxrwx 1 ah ah 73 Jul 29 09:22 shfmt -> /home/ah/.local/share/nvim/mason/packages/shfmt/shfmt_v3.12.0_linux_amd64
lrwxrwxrwx 1 ah ah 60 Jul 29 09:25 ruff -> /home/ah/.local/share/nvim/mason/packages/ruff/venv/bin/ruff
lrwxrwxrwx 1 ah ah 86 Jul 29 09:27 pyright-langserver -> /home/ah/.local/share/nvim/mason/packages/pyright/node_modules/.bin/pyright-langserver
lrwxrwxrwx 1 ah ah 75 Jul 29 09:27 pyright -> /home/ah/.local/share/nvim/mason/packages/pyright/node_modules/.bin/pyright
lrwxrwxrwx 1 ah ah 105 Jul 29 09:25 prisma-language-server -> /home/ah/.local/share/nvim/mason/packages/prisma-language-server/node_modules/.bin/prisma-language-server
lrwxrwxrwx 1 ah ah 81 Jul 29 09:22 lua-language-server -> /home/ah/.local/share/nvim/mason/packages/lua-language-server/lua-language-server
```

after changing `echo $0` to `readlink -f $0` its work as expected. i am not sure with other env like `*CYGWIN* | *MINGW* | *MSYS*`, but at least it work for me.

### Expected behavior

vtslss / pyright should work on typescript / python file.

### Steps to reproduce

1. install fresh neovim with lazyvim, **on WSL** (archlinux)
2. install lazyextra for python / typescript lang
3. restart nvim, mason will download package
4. try to open typescript / python.

### Affected packages

npm installed package (i only try on vtsls and pyright)

### Neovim version (>= 0.10.0)

$ nvim --version
NVIM v0.11.3
Build type: RelWithDebInfo
LuaJIT 2.1.1753364724
Run "nvim -V1 -v" for more info

### Operating system/version

Linux DESKTOP-HD67VPS 6.6.87.2-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC Thu Jun 5 18:30:46 UTC 2025 x86_64 GNU/Linux

### Healthcheck

```Text
==============================================================================
mason: 5 ⚠️

mason.nvim ~
- ⚠️ WARNING mason.nvim version v1.11.0
- ADVICE:
- The latest version of mason.nvim is: v2.0.1
- ✅ OK PATH: prepend
- ✅ OK Providers:
mason.providers.registry-api
mason.providers.client
- ✅ OK neovim version >= 0.7.0

mason.nvim [Registries] ~
- ✅ OK Registry `github.com/mason-org/mason-registry version: 2025-07-29-godly-yew` is installed.

mason.nvim [Core utils] ~
- ✅ OK unzip: `UnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler. Send`
- ✅ OK wget: `GNU Wget 1.25.0 built on linux-gnu.`
- ✅ OK curl: `curl 8.15.0 (x86_64-pc-linux-gnu) libcurl/8.15.0 OpenSSL/3.5.1 zlib/1.3.1 brotli/1.1.0 zstd/1.5.7 libidn2/2.3.7 libpsl/0.21.5 libssh2/1.11.1 nghttp2/1.66.0 nghttp3/1.10.1`
- ✅ OK gzip: `gzip 1.14-modified`
- ✅ OK tar: `tar (GNU tar) 1.35`
- ✅ OK bash: `GNU bash, version 5.3.3(1)-release (x86_64-pc-linux-gnu)`
- ✅ OK sh: `Ok`

mason.nvim [Languages] ~
- ⚠️ WARNING Ruby: not available
- ADVICE:
- spawn: ruby failed with exit code - and signal -. ruby is not executable
- ⚠️ WARNING Composer: not available
- ADVICE:
- spawn: composer failed with exit code - and signal -. composer is not executable
- ⚠️ WARNING PHP: not available
- ADVICE:
- spawn: php failed with exit code - and signal -. php is not executable
- ⚠️ WARNING RubyGem: not available
- ADVICE:
- spawn: gem failed with exit code - and signal -. gem is not executable
- ✅ OK luarocks: `/usr/sbin/luarocks 3.12.2`
- ✅ OK cargo: `cargo 1.87.0 (99624be96 2025-05-06)`
- ✅ OK Go: `go version go1.24.5 linux/amd64`
- ✅ OK node: `v24.4.1`
- ✅ OK python: `Python 3.13.5`
- ✅ OK JAVA_HOME: `openjdk version "21.0.7" 2025-04-15 LTS`
- ✅ OK java: `openjdk version "21.0.7" 2025-04-15 LTS`
- ✅ OK julia: `julia version 1.11.5`
- ✅ OK javac: `javac 21.0.7`
- ✅ OK pip: `pip 25.1.1 from /usr/lib/python3.13/site-packages/pip (python 3.13)`
- ✅ OK python venv: `Ok`
- ✅ OK npm: `10.9.2`

mason.nvim [GitHub] ~
- ✅ OK GitHub API rate limit. Used: 0. Remaining: 5000. Limit: 5000. Reset: Tue 29 Jul 2025 12:20:15 PM WIB.
```

### Screenshots or recordings

_No response_

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Inspect the generated launchers under ~/.local/share/nvim/mason/bin and their linked npm package .bin targets for vtsls and pyright. Reproduce the WSL installation steps, then compare how the launcher resolves its directory through the symlink. Done means both language servers start successfully and work on TypeScript and Python files without MODULE_NOT_FOUND errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
neovim, node.js, shell
Domain
devtools, tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.