Как настроить Bazel для проекта NgRx, использующего Jest? - PullRequest
1 голос
/ 27 июня 2019

У меня есть существующий проект Angular, который использует NgRx и Jest. Я хотел бы перевести проект для использования нового предварительного просмотра Bazel для Angular CLI (https://next.angular.io/guide/bazel). К сожалению, конфигурация, созданная при запуске ng add @angular/bazel, не создает мой проект правильно.

Это проект Angular 8, использующий Angular Material, NgRx и Jest. Он был создан с помощью помощников Angular CLI nrwl / nx, поэтому структура папок немного отличается от стандартного проекта Angular. Я также выбрал Ivy согласно этим инструкциям: https://angular.io/guide/ivy

Я рассмотрел пример проекта angular + bazel здесь: https://github.com/angular/angular-bazel-example Однако этот проект отличается от моего тем, что в нем используется Карма + Жасмин, а не Jest. (Я не знаю, связано ли это различие с моей проблемой или нет.)

После запуска yarn ng add @angular/bazel я также запустил yarn add parse5, чтобы исправить ошибку, описанную в одном из комментариев: https://github.com/lukasgeiter/gettext-extractor/issues/17

Из-за структуры папок nrwl / nx автоматическая конфигурация bazel не работает для меня (она ожидает, что ваша папка src находится в корне вашего рабочего пространства, но моя находится в apps / angularchatclient /). Я добился определенного прогресса, изменив "targetLabel": "//src:prodapp", на "targetLabel": "//apps/angularchatclient/src:prodapp", в нескольких местах моего файла angular.json. Я также использовал параметр --leaveBazelFilesOnDisk с ng build, чтобы я мог переместить файл BUILD.bazel в его правильный каталог и добавить к нему зависимости моего приложения.

Теперь, когда я запускаю yarn build, я получаю следующую ошибку:

yarn run v1.16.0
$ ng build
INFO: Analyzed target //apps/angularchatclient/src:prodapp (1 packages loaded, 1 target configured).
INFO: Found 1 target...
ERROR: /home/user/devbox/angularchatclient/apps/angularchatclient/src/BUILD.bazel:24:1: Compiling Angular templates (ngc) //apps/angularchatclient/src:sr
c failed (Exit 1)
Error during template compile of 'AppModule'
  Function calls are not supported in decorators but 'NxModule' was called.
Error during template compile of 'AppModule'
  Function calls are not supported in decorators but 'StoreModule' was called.
Error during template compile of 'AppModule'
  Function calls are not supported in decorators but 'EffectsModule' was called.
Error during template compile of 'AppModule'
  Function calls are not supported in decorators but 'StoreDevtoolsModule' was called.
: Unexpected value 'undefined' imported by the module 'AppModule in /home/user/.cache/bazel/_bazel_user/730bcc0be51d4201a9cf443607d64bce/execroot/project/apps/angularchatclient/src/app/app.module.ts'
Error during template compile of 'AppModule'
  Function calls are not supported in decorators but 'NxModule' was called.
Error during template compile of 'AppModule'
  Function calls are not supported in decorators but 'StoreModule' was called.
Error during template compile of 'AppModule'
  Function calls are not supported in decorators but 'EffectsModule' was called.
Error during template compile of 'AppModule'
  Function calls are not supported in decorators but 'StoreDevtoolsModule' was called.

Target //apps/angularchatclient/src:prodapp failed to build
Use --verbose_failures to see the command lines of failed build steps.

Я прочитал эту связанную проблему GitHub , но предложения изменить мои правила tsconfig или объявить константные переменные для вызовов forRoot () не помогли. Кроме того, этот вопрос связан Что мне не хватает?

Спасибо!

...