Azure yaml NodeTool步骤未安装管道的特定版本

sqserrrh  于 2023-03-12  发布在  Node.js
关注(0)|答案(1)|浏览(148)

我的Azure yaml管道中有NodeToolUseNode步骤:

steps:
  - task: NodeTool@0
    displayName: 'set node v16.19.0'
    inputs:
      versionSource: 'spec'
      versionSpec: '16.19.0'
  
  - task: UseNode@1
    displayName: 'use node v16.19.0'
    inputs:
      version: '16.19.0'

  - script: |
      sudo node -v
    displayName: 'Node Version'
    workingDirectory: $(Build.SourcesDirectory)

  - script: |
      sudo npm run build -- --mode $(NPM_BUILD_MODE)
    displayName: 'Building SPA with NPM'

但是当我运行管道时,Node Version步骤输出:

v18.14.1

Building SPA with NPM步进结束时输出:

Node.js v18.14.1

如果NodeTool不这样做,我如何强制构建机器使用我想要的节点版本?

zwghvu4y

zwghvu4y1#

我的Azure管道中的NodeTool遇到了相同的问题:

简要答复

这是因为脚本使用了sudo node -v而不是node -v,sudo node -v从root用户处选取节点版本。
基本上,NodeTool下载并更新当前用户的节点路径,但仍将根用户的节点保留为默认版本或最新LTS版本。

详细答案

steps:
  - task: NodeTool@0
    displayName: 'set node v16.19.0'
    inputs:
      versionSource: 'spec'
      versionSpec: '16.19.0'
  
  - task: UseNode@1
    displayName: 'use node v16.19.0'
    inputs:
      version: '16.19.0'

  - script: |
      node -v # this needs to be changed from sudo node -v to node -v
    displayName: 'Node Version'
    workingDirectory: $(Build.SourcesDirectory)

  - script: |
      npm run build -- --mode $(NPM_BUILD_MODE) 
    displayName: 'Building SPA with NPM'

更改以下内容

- script: |
      sudo node -v # this needs to be changed from sudo node -v to node -v
    displayName: 'Node Version'
    workingDirectory: $(Build.SourcesDirectory)

致:

- script: |
      node -v
    displayName: 'Node Version'
    workingDirectory: $(Build.SourcesDirectory)

这是因为它为root用户(sudo)选择最新的节点版本

相关问题