WSL下LazyVim中Typescript LSP无法附着且提示模块缺失如何解决?
前端LSP模块找不到的排查与解决思路
问题现象
使用LazyVim(WSL Ubuntu环境)开发时,JS/TS的Typescript LSP持续报错,:LspLog输出错误如下:
[ERROR][2024-06-18 21:41:58] .../vim/lsp/rpc.lua:734 "rpc" "/home/temo/.local/share/nvim/mason/bin/typescript-language-server" "stderr" "node:internal/modules/cjs/loader:1215 throw err; ^ Error: Cannot find module '/home/tirivashe/.local/share/nvim/mason/typescript-language-server/lib/cli.mjs' at Module._resolveFilename (node:internal/modules/cjs/loader:1212:15) at Module._load (node:internal/modules/cjs/loader:1038:27) at wrapModuleLoad (node:internal/modules/cjs/loader:212:19) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:158:5) at node:internal/main/run_main_module:30:49 { code: 'MODULE_NOT_FOUND', requireStack: [] } Node.js v22.3.0
Tailwind、CSS Modules、CSS等其他前端LSP均出现同类「找不到对应模块」错误,但Go、Lua等非前端LSP可正常工作。
排查与解决步骤
- 检查Mason路径的权限与用户一致性
错误日志显示LSP尝试读取/home/tirivashe/.local/share/nvim/mason/路径,但执行Neovim的用户是temo,存在用户名不一致问题。先执行ls -ld /home/tirivashe/.local/share/nvim/mason/查看权限,若当前用户无读写权限,运行sudo chown -R temo:temo /home/tirivashe/.local/share/nvim/mason/修正权限;或确认是否因用户切换导致路径混淆,统一使用当前用户的Mason路径。 - 重装前端类LSP
在Neovim中执行:MasonUninstall typescript-language-server tailwindcss-language-server cssmodules-language-server css-lsp卸载报错的LSP,再执行:MasonInstall重新安装。安装完成后检查/home/temo/.local/share/nvim/mason/packages/下是否存在对应LSP的完整文件(尤其是lib/cli.mjs这类入口文件)。 - 验证Node.js版本兼容性
当前使用Node.js v22.3.0,部分前端LSP依赖可能暂不兼容最新版本。可通过nvm切换到LTS版本(如v20.x)测试:
重启Neovim后检查LSP状态。curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash nvm install 20 nvm use 20 - 手动指定LSP命令路径
Mason生成的启动脚本可能指向错误路径,可在LazyVim配置文件(如~/.config/nvim/lua/plugins/lsp.lua)中手动指定LSP入口:
保存后重启Neovim加载配置。return { "neovim/nvim-lspconfig", opts = { servers = { tsserver = { cmd = { "/home/temo/.local/share/nvim/mason/packages/typescript-language-server/node_modules/.bin/typescript-language-server", "--stdio" }, }, tailwindcss = { cmd = { "/home/temo/.local/share/nvim/mason/packages/tailwindcss-language-server/node_modules/.bin/tailwindcss-language-server", "--stdio" }, }, cssmodules_ls = { cmd = { "/home/temo/.local/share/nvim/mason/packages/cssmodules-language-server/node_modules/.bin/cssmodules-language-server", "--stdio" }, }, cssls = { cmd = { "/home/temo/.local/share/nvim/mason/packages/css-lsp/node_modules/.bin/css-languageserver", "--stdio" }, }, }, }, } - 排查WSL文件系统挂载问题
若Mason安装路径位于Windows挂载目录(如/mnt/c/),可能出现权限或路径解析异常。确保Neovim配置及Mason路径都在WSL原生文件系统(如/home/temo/下),避免跨文件系统的路径问题。
内容的提问来源于stack exchange,提问作者Tiri
相关产品推荐
相关产品推荐

