Советы и рекомендации
Частые ошибки при сборке UI-сервиса и их решения

Частые ошибки при сборке UI-сервиса и их решения

🚫

Чтобы определить ошибку сборки UI-сервиса, необходимо раскрыть пункт "Сборка бандла продукта", в котором отражён полный лог сборки.

1. Конфликт версий зависимостей

Описание: Несовместимость версий пакетов, например:

npm ERR! Found: @angular/core@16.2.15
npm ERR! node_modules/@angular/core
npm ERR!   @angular/core@"16.2.15" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer@angular/common@"^17.0.0" from @angular/compiler@17.0.13
npm ERR! node_modules/@angular/compiler
npm ERR!   @angular/compiler@"17.0.13" from the root project

Решение:

  • Самый простой способ: скопировать ошибку в ИИ. Он подскажет, какая конкретно зависимость с чем конфликтует.
  • Можно проанализировать самостоятельно. В примере указано, что в проекте установлена устаревшая версия Angular (@angular/core@16.2.15), а @angular/compiler@17.0.13 требует более новую версию Angular (^17.0.0), которая несовместима с установленной. Для решения проблемы необходимо обновить все Angular-пакеты до единой версии 17.x.

2. Ошибка сборки: npm ERR! missing script: prod

Описание: Пайплайн при сборке UI-сервиса выполняет команду npm run-script prod, который отсутствует в package.json.

Решение:

  • Необходимо добавить скрипт prod в package.json. Стандартный пример:
"prod": "ng build --configuration production"

3. Ошибка сборки: npm ERR! 404 Not Found - GET https://your-nexus-repo/repository/npm-group/some-package

Описание: Отсутствует пакет в repolib-main. Пример полной ошибки:

Решение:

  • Написать на адрес secure-sdlc@diasoft.ru с просьбой загрузить отсутствующий пакет.

4. Не публикуются пакеты в Nexus. Ошибка: Repository does not allow updating assets

Описание: Версия библиотеки в package.json совпадает с уже опубликованной версией в Nexus.

Решение:

  • Необходимо поменять версию (патч, минорную или мажорную) в package.json.

5. Не публикуются пакеты в Nexus. Ошибка: Cannot create a string longer than 0x1fffffe8 characters

Описание: Слишком большой размер публикуемого пакета.

Решение:

  • Необходимо вынести все подобные конструкции:
"assets": [
  {
    "glob": "**/*",
    "input": "node_modules/@diasoft/some-ui-lib",
    "output": "assets/some"
  }
]

из projects.<YOUR_PROJECT>.architect.build.options в projects.<YOUR_PROJECT>.architect.build.configurations.production.

  • Внутри конфигурации build внутри виджетов необходимо прописать "assets": []. Собрать локально и в dist посмотреть, сколько после этого виджеты будут весить (должны стать еще легче).

Статья будет дополняться...