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,

Другие вопросы по тегам