You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

设置nvm默认版本为lts/*后zsh初始化报错N/A版本未安装的原因

为什么nvm设置default为lts/*会报错"N/A: version 'N/A -> N/A' is not yet installed"?

我之前配置nvm的时候也踩过这个坑,这个错误的核心原因其实是lts/*的特性和nvm默认别名的工作逻辑不匹配,具体来说有这几点:

  • lts/*是动态别名,不是具体版本号lts/*是nvm提供的一个"动态指向",它会自动关联当前官方最新的LTS版本,但nvm的default别名需要绑定到一个已经安装的具体版本号(比如v20.10.0),而不是这种动态的占位符。当你把~/.nvm/alias/default的内容设为lts/*时,zsh启动初始化nvm时,会直接把这个值当作版本名去查找本地已安装的版本,自然找不到,就抛出了N/A的错误。

  • nvm初始化时不会自动解析动态别名:shell启动时,nvm读取default别名的逻辑是直接匹配本地已安装的版本目录,它不会主动去解析lts/*对应的具体版本,也不会自动安装对应的版本。所以就算你本地已经安装了最新LTS版本,直接把lts/*设为default还是会触发这个错误。

  • 额外可能的触发点:本地无任何LTS版本:如果你的机器上还没安装任何Node.js LTS版本,那lts/*连可解析的目标都没有,nvm自然会返回N/A的错误提示。

快速解决小技巧

如果想让default自动跟随最新LTS版本,可以在你的zsh配置文件(比如~/.zshrc)里添加这一行:

nvm use lts/* --default

这样每次shell启动时,nvm会自动解析lts/*到当前最新的LTS版本,并且将其设为默认版本,前提是你已经安装了至少一个LTS版本。

内容的提问来源于stack exchange,提问作者Brad Parks

火山引擎 最新活动