TeamCity with npm - Error: ENOENT, stat 'C:\Windows\system32\config\systemprofile\AppData\Roaming\npm'
TeamCity with npm - Error: ENOENT, stat 'C:\Windows\system32\config\systemprofile\AppData\Roaming\npm'
我在获取 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\worka434ee5d01fd0d9
[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 that this is a known problem, but none of the solutions 为我工作了。
我的设置如下:我在 Azure 中有两个虚拟机,build
和 agent
。两者都连接到同一个 AD 域 domain
,其中有一个用户 domain\teamcityuser
,属于 "standard" class(即不是管理员)。此用户同时运行构建服务器(在 build
实例上)和构建代理(在 agent
实例上)。
我试过这些东西都没有成功:
- 正在创建错误消息中的目录,确保
domain\teamcityuser
对其具有完全控制访问权限。
- 正在
C:\Users\teamcityuser\AppData\Roaming
下创建 npm
目录
- 正在创建包含内容
prefix=C:\npm-global
的文件 C:\Windows\System32\config\SystemProfile\.npmrc
,以及创建后一个文件夹
- 运行
npm cache clean
在 运行 构建之前
- 正在通过
npm install -g npm
安装全局 npm
包
我还能做些什么来让它工作?
为了避免 the XY problem,这是我的实际问题:
我有一个 .NET Web API 项目,通过此 TeamCity 安装,通过 Octopus Deploy 和托管服务器进行 CI 设置。我还有一个 github 存储库,其中包含将使用 API 的 Web SPA 代码。水疗中心是用 grunt build
构建的,之后有一个 dist
文件夹,其中包含我需要部署的所有内容。
我想尽可能多地重新使用 CI 架构来推出客户端。
鉴于可执行文件的路径包含 SysWOW64
,这是一个 x32 Powershell,因此,它指的是位于 C:\Windows\sysWOW64\config\systemprofile
的 x32 系统配置文件路径。因此,您需要使用该路径作为基础以实施任何解决方法,例如,创建 C:\Windows\sysWOW64\config\systemprofile\AppData\Roaming\npm
文件夹,而不是普通的 C:\Windows\system32\config\systemprofile\AppData\Roaming\npm
.
我在获取 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\worka434ee5d01fd0d9
[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 that this is a known problem, but none of the solutions 为我工作了。
我的设置如下:我在 Azure 中有两个虚拟机,build
和 agent
。两者都连接到同一个 AD 域 domain
,其中有一个用户 domain\teamcityuser
,属于 "standard" class(即不是管理员)。此用户同时运行构建服务器(在 build
实例上)和构建代理(在 agent
实例上)。
我试过这些东西都没有成功:
- 正在创建错误消息中的目录,确保
domain\teamcityuser
对其具有完全控制访问权限。 - 正在
C:\Users\teamcityuser\AppData\Roaming
下创建 - 正在创建包含内容
prefix=C:\npm-global
的文件C:\Windows\System32\config\SystemProfile\.npmrc
,以及创建后一个文件夹 - 运行
npm cache clean
在 运行 构建之前 - 正在通过
npm install -g npm
安装全局
npm
目录
npm
包
我还能做些什么来让它工作?
为了避免 the XY problem,这是我的实际问题:
我有一个 .NET Web API 项目,通过此 TeamCity 安装,通过 Octopus Deploy 和托管服务器进行 CI 设置。我还有一个 github 存储库,其中包含将使用 API 的 Web SPA 代码。水疗中心是用 grunt build
构建的,之后有一个 dist
文件夹,其中包含我需要部署的所有内容。
我想尽可能多地重新使用 CI 架构来推出客户端。
鉴于可执行文件的路径包含 SysWOW64
,这是一个 x32 Powershell,因此,它指的是位于 C:\Windows\sysWOW64\config\systemprofile
的 x32 系统配置文件路径。因此,您需要使用该路径作为基础以实施任何解决方法,例如,创建 C:\Windows\sysWOW64\config\systemprofile\AppData\Roaming\npm
文件夹,而不是普通的 C:\Windows\system32\config\systemprofile\AppData\Roaming\npm
.