You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins部署任务执行时提示nvm: command not found问题求助

问题解决:Jenkins执行nvm命令提示"command not found"

核心原因

Jenkins的每个sh步骤都是独立的Shell进程,你单独执行. ~/.nvm/nvm.sh的步骤只会在当前进程中加载nvm环境,下一个sh 'nvm list'是全新的进程,不会继承之前的环境变量,所以找不到nvm命令。

另外从控制台输出能看到,你的proxy账号下nvm没有设置默认版本(显示N/A version is not installed yet),这也会导致nvm加载异常,建议先在proxy账号下安装指定Node版本并设置为默认:

nvm install <你的Node版本号>
nvm alias default <你的Node版本号>

解决方案

方案1:合并Shell命令到同一个sh步骤

把需要依赖nvm的命令和加载nvm的命令放在同一个sh块里,用多行字符串(三重引号)包裹,确保在同一个Shell进程中执行:

stage("Dependencies - npm installs") {
  when {anyOf {branch 'develop'; branch 'PR-*' } }
  steps {
    sh 'pwd' 
    sh 'echo $PATH'
    sh '''
      . ~/.nvm/nvm.sh
      nvm list
      npm install
    '''
  }
}

方案2:让Jenkins自动加载nvm环境

修改proxy用户的Shell启动配置(比如~/.bash_profile或~/.profile,因为Jenkins的sh默认是非登录非交互Shell,可能不会加载.bashrc),添加以下内容:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

之后Jenkins的每个sh步骤启动时都会自动加载nvm环境,不需要手动执行. ~/.nvm/nvm.sh。如果还是不生效,可以在sh命令中指定用登录Shell执行:

sh 'bash -l -c "nvm list"'

方案3:直接使用nvm的绝对路径执行命令

如果你不想修改Shell配置或合并命令,也可以直接调用nvm的脚本执行命令:

sh '~/.nvm/nvm.sh list'

不过这种方式写起来比较繁琐,不推荐作为长期方案。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 22:10:11