TeamCity with npm - 错误:ENOENT,stat' C:\ Windows \ system32 \ config \ systemprofile \ AppData \ Roaming \ npm'

时间:2015-07-10 13:56:25

标签: powershell azure npm teamcity teamcity-9.1

我在使用TeamCity配置的最后部分时遇到了严重问题。

我有一个执行以下命令的powershell步骤:

& npm install
& grunt build

记录以下输出:

Build (Powershell) (1s)
[13:18:08]PowerShell Executable: C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
[13:18:08]Working directory: C:\BuildAgent\work\6a434ee5d01fd0d9
[13:18:08]PowerShell arguments: [-NonInteractive, -ExecutionPolicy, ByPass, -File, C:\BuildAgent\temp\buildTmp\powershell8407335260182621582.ps1]
[13:18:09]Error: ENOENT, stat 'C:\Windows\system32\config\systemprofile\AppData\Roaming\npm'
[13:18:09]
[13:18:09]grunt-cli: The grunt command line interface. (v0.1.13)
[13:18:09]Process exited with code 0

seen这是一个known问题,但到目前为止solutions都没有对我有用。

我的设置如下:我在Azure中有两个虚拟机,buildagent。两者都连接到同一个AD域domain,其中有一个用户domain\teamcityuser,其标准为"标准" class(即不是admin)。此用户同时运行构建服务器(在build实例上)和构建代理(在agent实例上)。

我尝试过这些事情没有成功:

  • 在错误消息中创建目录,确保domain\teamcityuser具有对其的完全控制访问权限。
  • npm
  • 下创建C:\Users\teamcityuser\AppData\Roaming目录
  • 创建包含内容C:\Windows\System32\config\SystemProfile\.npmrc的文件prefix=C:\npm-global,以及创建后一个文件夹
  • 在运行构建
  • 之前运行npm cache clean
  • 通过npm
  • 安装全球npm install -g npm

我还可以尝试使其更有效吗?

为了避免the XY problem,这是我的实际问题:

我有一个.NET Web API项目,通过此TeamCity安装,通过Octopus Deploy和托管服务器进行CI设置。我还有一个github repo,其中包含将使用API​​的Web SPA代码。该水疗中心使用grunt build构建,之后会有一个dist文件夹,其中包含我需要部署的所有内容。

我希望尽可能多地重用CI架构来推出客户端。

1 个答案:

答案 0 :(得分:5)

鉴于可执行文件的路径包含SysWOW64,这是一个x32 Powershell,因此,它指的是x32系统配置文件路径,它位于C:\Windows\sysWOW64\config\systemprofile。因此,您需要使用该路径作为基础,以便实现任何变通方法,例如,创建C:\Windows\sysWOW64\config\systemprofile\AppData\Roaming\npm文件夹,而不是普通C:\Windows\system32\config\systemprofile\AppData\Roaming\npm