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

如何在Bitbucket Pipeline步骤中让nvm加载的Node全程可用?

解决Bitbucket Pipeline中nvm加载Node全程可用的问题

核心原因

Bitbucket Pipeline的每个script行都是独立的子shell进程,前一行通过source nvm.sh配置的环境变量、Node路径等上下文,不会自动传递到下一行的子shell中,导致每次执行node/npm都需要重新初始化nvm。

方案1:将所有依赖Node的命令整合到单个脚本文件

把nvm初始化、Node激活和业务命令全部放在同一个shell脚本里,单个脚本会在同一个shell进程中执行,上下文全程保留。

  1. 创建整合脚本(比如node-workflow.sh):
#!/bin/bash

# 执行你的nvm安装脚本
./your-nvm-install-script.sh

# 加载nvm并激活指定版本
source ~/.nvm/nvm.sh
nvm use 20.9.0

# 执行需要Node的业务命令
npm install
npm run build
npm run test
  1. 在Bitbucket Pipeline中调用该脚本:
pipelines:
  default:
    - step:
        script:
          - chmod +x node-workflow.sh
          - ./node-workflow.sh

方案2:将所有命令串联在同一行脚本中

如果不想额外创建脚本,可把nvm初始化、Node激活和业务命令用&&连接成一行,所有命令会在同一个子shell中执行:

pipelines:
  default:
    - step:
        script:
          - ./your-nvm-install-script.sh && source ~/.nvm/nvm.sh && nvm use 20.9.0 && npm install && npm run build

方案3:预导出Node路径到全局PATH

先完成nvm初始化和Node激活,把对应版本Node的可执行文件路径导出到PATH环境变量,后续命令直接调用node/npm即可:

pipelines:
  default:
    - step:
        script:
          - ./your-nvm-install-script.sh
          - export NVM_DIR="$HOME/.nvm" && source "$NVM_DIR/nvm.sh" && nvm use 20.9.0 && export PATH="$(nvm which 20.9.0):$PATH"
          # 后续命令直接使用node/npm,PATH已包含对应版本的路径
          - npm install
          - npm run test

原理是把指定版本Node的可执行路径加到PATH最前端,系统会优先找到该版本的node/npm,无需依赖nvm上下文。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 13:24:52