Skip to content

vtsls / pyright is not referring to correct place #1997

@ahsanu123

Description

@ahsanu123

I've searched open issues for similar requests

  • Yes

I've manually reviewed logs to find potential errors

  • Yes

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

  • 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
[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
[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

[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

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

// to 
basedir=$(dirname $(readlink -f $0) | sed -e 's,\\,/,g')
~/.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

==============================================================================
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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions