TeamCity с npm - ошибка: ENOENT, статистика '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\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
Я видел, что это известная проблема, но пока ни одно из решений не помогло мне.
Моя настройка следующая: у меня есть две виртуальные машины в Azure, build
а также agent
, Оба подключены к одному домену AD, domain
, в котором есть пользователь domain\teamcityuser
кто из "стандартного" класса (т.е. не админ). Этот пользователь запускает оба сервера сборки (на 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
Что еще я могу попытаться заставить это работать?
И чтобы избежать проблемы XY, вот моя актуальная проблема:
У меня есть проект.NET Web API с настройкой CI через эту установку TeamCity, через Octopus Deploy и на хост-сервер. У меня также есть репозиторий github с кодом для веб-SPA, который будет использовать API. Спа построен с grunt build
после чего есть dist
папка со всем, что мне нужно для развертывания.
Я бы хотел как можно больше использовать архитектуру CI для развертывания клиента.
1 ответ
Учитывая, что путь к исполняемому файлу содержит 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
,