Npm 如何在circleci 2.0中逐步启用nvm?

Npm 如何在circleci 2.0中逐步启用nvm?,npm,circleci,nvm,Npm,Circleci,Nvm,这是我的人生步骤 steps: -run: name: Setup nvm and npm command: | wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash export NVM_DIR=$HOME/.nvm source $NVM_DIR/nvm.sh nvm install 8

这是我的人生步骤

steps:
  -run:
      name: Setup nvm and npm
      command: |
        wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
        export NVM_DIR=$HOME/.nvm
        source $NVM_DIR/nvm.sh
        nvm install 8.9 && nvm alias default 8.9
   -run: npm install && npm run lint && npm test
第二步总是失败,并显示此错误消息

/bin/bash: npm: command not found
我选中了
.bashrc
,可以看到以下几行被添加到文件的末尾

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
Circleci 2.0通过使用
#启动新shell来调用step命令/bin/bash-eo管道故障

如果我启动一个docker(
docker run-I-t buildpack deps:xenial
)并应用第一步,然后通过
启动一个新shell/bin/bash-eo pipefail
,我可以看到路径上有
npm

我正在为这个项目使用docker

version: 2
jobs:
  test_main:
    docker:
      - image: buildpack-deps:xenial
那么为什么它在circleci 2.0环境中失败呢?如何确保
npm
从步骤1开始可用于步骤2

我已尝试添加
[-s“$HOME/.bashrc”]&&&\。“$HOME/.bashrc”
~/.bash\u配置文件
(如果
.bashrc
由于非交互式/非登录shell而未执行)

要重现此问题,可以使用此
.circleci/config.yml
文件运行
circleci build

version: 2
jobs:
  build:
    docker:
      - image: buildpack-deps:xenial
    steps:
      - run:
          name: Setup nvm and npm
          command: |
            wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
            # Activate nvm
            export NVM_DIR=$HOME/.nvm
            touch $HOME/.nvmrc
            source $NVM_DIR/nvm.sh
            # Use node 8.9
            nvm install 8.9 && nvm alias default 8.9
            echo 8.9 > $HOME/.nvmrc
            # Enable nvm in following steps
            echo '[ -s "$HOME/.bashrc" ] && \. "$HOME/.bashrc"' >> $HOME/.bash_profile
            # To fix npm install : "node-pre-gyp: Permission denied"
            npm config set user 0
            npm config set unsafe-perm true
            npm install -g npx webpack webpack-cli jest
            node --version
            npm --version
      - run: npm install
您将看到以下错误消息:

====>> npm install
  #!/bin/bash -eo pipefail
npm install
/bin/bash: npm: command not found
Error: Exited with code 127
Step failed
Task failed

问题在于这些线路:

        # Enable nvm in following steps
        echo '[ -s "$HOME/.bashrc" ] && \. "$HOME/.bashrc"' >> $HOME/.bash_profile
我希望从
.bash\u profile
中获得
.bashrc
。但是,由于circleci的shell是非交互式的,因此环境变量
PS1
为空。因此,
.bashrc
基本上一经来源就立即退出,因为
.bashrc

# If not running interactively, don't do anything
[ -z "$PS1" ] && return
我必须将以下几行直接放在
$BASH_ENV

echo 'export NVM_DIR=$HOME/.nvm' >> $BASH_ENV
echo 'source $NVM_DIR/nvm.sh' >> $BASH_ENV

只需在每个步骤的开头添加
source/opt/circleci/.nvm/nvm.sh

我发现通过nvm更改默认节点对我的步骤不起作用

解决者:

      - run:
          name: 'Install Project Node'
          command: |
            set +x
            source ~/.bashrc

            nvm install 12
            NODE_DIR=$(dirname $(which node))
            echo "export PATH=$NODE_DIR:\$PATH" >> $BASH_ENV

更多的配置将很有帮助。例如,您使用的是什么executor和image?我使用的是docker。我在问题中添加了一些更多的信息。这对我不起作用,我必须在每个步骤上执行
nvm安装8.9&&nvm alias default 8.9
。有人找到了解决方案吗?