运行 自托管 VSO 代理上的 NPM
Running NPM on a self-hosted VSO Agent
我已经使用 Azure 虚拟机和 Azure 上的 Visual Studio 发布插件设置了 VSO 代理。我还安装了最新版本的 node.js(对 windows 使用 NVM)。我在安装 VSO 代理时使用了默认帐户,因为我用于远程桌面的凭据不起作用。
我可以远程进入机器和 运行 我正在尝试从 VSO 运行 的构建脚本。我还可以 运行 使用它构建纯 .NET,而且效果很好。我的问题来自使用 npm 安装我的包和 运行 构建。
我已经建立了这样的构建需求:
npm | exists
我已经通过控制面板在 VSO 代理上设置了一个功能,如下所示:
npm | C:\Program Files\nodejs\npm.cmd
也试过
npm | C:\Program Files\nodejs
我可以在该文件夹中看到 npm.cmd,当我远程使用该路径时,我可以 运行 npm。我还根据这个问题重新启动了 VSO 代理服务:
重新启动服务器并完成 "update all agents" 几次。我的路径中也有 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\s\azure-deploy.ps1:24 char:1
+ npm update
+ ~~~
+ CategoryInfo : ObjectNotFound: (npm:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
我也尝试过添加如下所述的行:
$env:Path += ";C:\Program Files\nodejs\"
同样的错误。我的 $env:Path 的 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 Server0\Tools\Binn\;C:\Program Files (x86)\Windows Kits.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.cmd
和 C:\Program Files\nodejs\node.js
都存在并且 NETWORK SERVICE 对它们有权限。 (以及管理员、SYSTEM 和我的登录名)
尝试从以下位置添加 运行 npm 命令 构建任务:
添加构建步骤 -> 添加任务 -> 包 -> npm(运行 一个 npm 命令)
并添加install作为command,以及web-project的root ]作为工作目录
否则,请尝试添加以下功能:
node.js | C:\Program Files\nodejs\node.exe
和:
npm | C:\Program Files\nodejs\npm.cmd
确保 npm 安装在 "C:\Program Files\nodejs\" 文件夹中,然后在您的 PowerShell 脚本中添加以下内容:
$env:Path += ";C:\Program Files\nodejs\"
解决方法是使用常规安装程序安装 node.js:
https://nodejs.org/en/download/
这就奏效了。还有其他问题,但这个问题的直接问题是通过不使用 nvm 安装节点来解决的。然后我可以在 VSO 构建定义界面中添加一个 npm 任务。
我已经使用 Azure 虚拟机和 Azure 上的 Visual Studio 发布插件设置了 VSO 代理。我还安装了最新版本的 node.js(对 windows 使用 NVM)。我在安装 VSO 代理时使用了默认帐户,因为我用于远程桌面的凭据不起作用。
我可以远程进入机器和 运行 我正在尝试从 VSO 运行 的构建脚本。我还可以 运行 使用它构建纯 .NET,而且效果很好。我的问题来自使用 npm 安装我的包和 运行 构建。
我已经建立了这样的构建需求:
npm | exists
我已经通过控制面板在 VSO 代理上设置了一个功能,如下所示:
npm | C:\Program Files\nodejs\npm.cmd
也试过
npm | C:\Program Files\nodejs
我可以在该文件夹中看到 npm.cmd,当我远程使用该路径时,我可以 运行 npm。我还根据这个问题重新启动了 VSO 代理服务:
重新启动服务器并完成 "update all agents" 几次。我的路径中也有 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\s\azure-deploy.ps1:24 char:1
+ npm update
+ ~~~
+ CategoryInfo : ObjectNotFound: (npm:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
我也尝试过添加如下所述的行:
$env:Path += ";C:\Program Files\nodejs\"
同样的错误。我的 $env:Path 的 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 Server0\Tools\Binn\;C:\Program Files (x86)\Windows Kits.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.cmd
和 C:\Program Files\nodejs\node.js
都存在并且 NETWORK SERVICE 对它们有权限。 (以及管理员、SYSTEM 和我的登录名)
尝试从以下位置添加 运行 npm 命令 构建任务:
添加构建步骤 -> 添加任务 -> 包 -> npm(运行 一个 npm 命令)
并添加install作为command,以及web-project的root ]作为工作目录
否则,请尝试添加以下功能:
node.js | C:\Program Files\nodejs\node.exe
和:
npm | C:\Program Files\nodejs\npm.cmd
确保 npm 安装在 "C:\Program Files\nodejs\" 文件夹中,然后在您的 PowerShell 脚本中添加以下内容:
$env:Path += ";C:\Program Files\nodejs\"
解决方法是使用常规安装程序安装 node.js:
https://nodejs.org/en/download/
这就奏效了。还有其他问题,但这个问题的直接问题是通过不使用 nvm 安装节点来解决的。然后我可以在 VSO 构建定义界面中添加一个 npm 任务。