在自托管VSO代理上运行NPM

时间:2016-01-25 11:14:20

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

我在Azure上使用Azure VM和Visual Studio Release插件设置了VSO代理。我还安装了最新版本的node.js(使用NVM for windows)。我在安装VSO代理时使用了默认帐户,因为我用于远程桌面的凭据不起作用。

我可以远程进入机器并运行我试图从VSO运行的构建脚本。我也可以用它运行纯粹的.NET构建并且很好。我的问题在于使用npm来安装我的软件包并运行构建。

我已经在构建上设置了这样的需求:

npm | exists

我已经从控制面板设置了VSO代理的功能,如下所示:

npm | C:\Program Files\nodejs\npm.cmd

还试过

npm | C:\Program Files\nodejs

我可以在该文件夹中看到npm.cmd,当我远程使用该路径时,我可以运行npm。我还根据这个问题重新启动了VSO代理服务:

TFS build agent cannot locate npm

重新启动服务器并完成"更新所有代理"几次。我的路径中也有npm,并且能够在登录时正常执行。

编辑:

错误讯息:

npm : The term 'npm' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the 
spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:\work-folder\1\s\azure-deploy.ps1:24 char:1
+ npm update
+ ~~~
+ CategoryInfo : ObjectNotFound: (npm:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

我还尝试添加如下所述的行:

$env:Path += ";C:\Program Files\nodejs\"

同样的错误。我的$ env的Write-Host:该命令之后的路径写入:

C:\Application Intallers\agent (1)\agent\worker\Modules\Microsoft.TeamFoundation.DistributedTask.Task.Internal\NativeBinaries\amd64;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Users\propertyplotdev\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Program Files\Git\cmd;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files (x86)\Microsoft SDKs\Azure\CLI\wbin;C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy;C:\Program Files\nodejs;C:\Windows\ServiceProfiles\LocalService\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin;C:\Windows\ServiceProfiles\LocalService\.dnx\bin;C:\Program Files\nodejs\

C:\Program Files\nodejs\npm.cmdC:\Program Files\nodejs\node.js都存在且NETWORK SERVICE对它们拥有权限。 (以及Adiministrators,SYSTEM和我的登录信息)

3 个答案:

答案 0 :(得分:7)

解决方法是使用常规安装程序安装node.js:

https://nodejs.org/en/download/

然后工作了。还有其他问题但是这个问题的直接问题是通过不使用nvm来安装节点来解决的。然后我可以在VSO构建定义界面中添加一个npm任务。

答案 1 :(得分:2)

确保npm安装在" C:\ Program Files \ nodejs \"文件夹,然后在PowerShell脚本中添加以下内容:

$env:Path += ";C:\Program Files\nodejs\"

答案 2 :(得分:1)

尝试从

添加运行npm命令构建任务

添加构建步骤 - >添加任务 - >套餐 - > npm(运行npm命令)

install 添加为命令,将根目录添加为工作目录

否则,请尝试添加以下功能:

node.js | C:\Program Files\nodejs\node.exe

   npm | C:\Program Files\nodejs\npm.cmd