【问题标题】:Is it safe to run "Node.js Tool installer task" multiple times on Azure Devops hosted agent?在 Azure Devops 托管代理上多次运行“Node.js 工具安装程序任务”是否安全?
【发布时间】:2020-12-07 19:31:17
【问题描述】:

我们有一个用于 Azure Devops 托管代理的专用服务器。服务器运行我们拥有的所有管道。现在我们遇到了一个问题,一个项目需要 node.js 版本 8,而一个项目需要版本 10 或 12。

所以我们不能只更新服务器上的 node.js 安装。

Microsoft 提供了Node.js Tool installer task,但描述说它将把它添加到 PATH 环境变量中。我们还没有运行安装程序任务(不想破坏构建)。

有没有人尝试在一台服务器上安装多个版本的 node.js?可能吗?还是该任务仅用于托管(短期)构建代理?

【问题讨论】:

    标签: node.js azure-devops azure-pipelines


    【解决方案1】:

    这很好,troubleshoot section 中也提到了

    如果您使用 nvm 管理不同版本的 Node.js,请考虑改用 Node Tool Installer 任务。 (由于历史原因,在 macOS 映像上安装了 nvm。)nvm 通过添加 shell 别名和更改 PATH 来管理多个 Node.js 版本,这与 Azure Pipelines 在新进程中运行每个任务的方式交互不佳。节点工具安装程序任务正确处理此模型。但是,如果您的工作需要使用 nvm,您可以在每个管道的开头添加以下脚本:

    steps:
    - bash: |
        NODE_VERSION=12  # or whatever your preferred version is
        npm config delete prefix  # avoid a warning
        . ${NVM_DIR}/nvm.sh
        nvm use ${NODE_VERSION}
        nvm alias default ${NODE_VERSION}
        VERSION_PATH="$(nvm_version_path ${NODE_VERSION})"
        echo "##vso[task.prependPath]$VERSION_PATH"
    

    然后节点和其他命令行工具将用于管道作业的其余部分。在需要使用 nvm 命令的每个步骤中,您需要使用以下命令启动脚本:

    - bash: |
        . ${NVM_DIR}/nvm.sh
        nvm <command>
    

    总之,使用Node Tool Installer 很好,但如果您决定使用nvm,请记住上面的cmets。

    【讨论】:

      【解决方案2】:

      如何使用nvm
      它是支持多个版本的 node.js 的好工具。用的比较多。

      例如

      nvm install v8
      nvm install v10
      nvm install v12
      
      # first terminal
      nvm use 8 
      npm install 
      node node_v8_server.js
      
      # second terminal
      nvm use 10
      npm install
      node node_v10_server.js
      
      # third terminal
      nvm use 12
      npm install
      node node_v12_server.js
      

      【讨论】:

        猜你喜欢
        • 2019-08-31
        • 1970-01-01
        • 2021-06-06
        • 2020-08-10
        • 1970-01-01
        • 2019-11-06
        • 1970-01-01
        • 1970-01-01
        • 2021-12-28
        相关资源
        最近更新 更多