在NvChad中配置angular-ls失败:Client退出错误求助
解决NvChad中angular-ls配置的"Client quit with exit code 1"错误
问题场景
在NvChad中配置angular-ls,使用如下lspconfig.lua代码:
local on_attach = require("nvchad.configs.lspconfig").on_attach local on_init = require("nvchad.configs.lspconfig").on_init local capabilities = require("nvchad.configs.lspconfig").capabilities local lspconfig = require "lspconfig" local servers = { "html", "cssls" } -- lsps with default config for _, lsp in ipairs(servers) do lspconfig[lsp].setup { on_attach = on_attach, on_init = on_init, capabilities = capabilities, } end lspconfig.angularls.setup { on_attach = on_attach, on_init = on_init, capabilities = capabilities, } -- typescript lspconfig.tsserver.setup { on_attach = on_attach, on_init = on_init, capabilities = capabilities, }
打开Angular项目的.ts文件时,出现错误:Client 1 quit with exit code 1 and signal 0。
查看lsp.log,核心错误为:
Error: Failed to resolve '@angular/language-service' with minimum version '15.0' from [
"/home/shkoki/dev/angular-calculator/node_modules"
]
全局已安装相关包:
▶ npm -g list /home/shkoki/.nvm/versions/node/v20.13.1/lib ├── @angular/language-server@17.3.2 ├── @angular/language-service@17.3.8 ├── corepack@0.28.0 └── npm@10.5.2
错误原因
angular-language-server默认仅在项目本地的node_modules目录查找@angular/language-service,当前项目未安装该依赖,仅全局安装时,服务无法找到依赖导致启动失败。
解决方案
方案1:项目本地安装依赖(推荐)
在Angular项目根目录执行以下命令,安装与项目Angular版本匹配的@angular/language-service:
npm install --save-dev @angular/language-service
注意:确保安装的版本与项目中
@angular/core的版本一致,避免兼容性问题。
方案2:配置angular-ls识别全局依赖
修改lspconfig.lua中的angularls配置,通过cmd参数指定全局包的探测路径,让服务能找到全局安装的@angular/language-service:
lspconfig.angularls.setup { on_attach = on_attach, on_init = on_init, capabilities = capabilities, cmd = { "ngserver", "--stdio", -- 指定全局node_modules路径 "--tsProbeLocations", "/home/shkoki/.nvm/versions/node/v20.13.1/lib/node_modules", "--ngProbeLocations", "/home/shkoki/.nvm/versions/node/v20.13.1/lib/node_modules" }, }
注意:全局包版本需与项目Angular版本兼容,否则可能出现功能异常。
内容的提问来源于stack exchange,提问作者Andrija Škontra
相关产品推荐
相关产品推荐

