Разрешение папки «Активы»: запуск приложения в рамках проекта без сбора ресурсов - PullRequest
0 голосов
/ 01 мая 2019

Я создал приложение в рабочей области Angular. При работе

ng serve [application-name]

Прекрасно подбирает изображения и файлы в папке ресурсов. Теперь я хочу запустить рабочую область только с

ng serve

Я ожидаю, что при загрузке приложения с отложенной загрузкой путь разрешится, но вместо этого я получу

zone.js:3243 GET http://localhost:4200/assets/terms.txt 404 (Not Found)

Как правильно настроить доступ к ресурсам приложения в рабочей области?

1 Ответ

0 голосов
/ 03 мая 2019

РЕДАКТИРОВАТЬ Поговорив в автономном режиме, я думаю, что мы нашли решение. Я опубликую его здесь и оставлю ниже ссылку для справки, даже если исходный ответ, который я разместил, не имеет отношения к проблеме.

Вы пытаетесь запустить несколько приложений Angular и прокладывать маршруты между ними через что-то вроде Firebase, где вы можете направлять разные маршруты в разные приложения.

Чтобы это работало локально для разработки, вам нужно будет запускать каждое приложение Angular отдельно на своем собственном порту. Я предлагаю вам контролировать пункт назначения маршрута в файлах среды. Таким образом, когда вы работаете локально, вы можете указать порт, на котором запущено приложение, а затем указать конечную точку, которую Firebase использует в работе.

Пример environment.ts файла в вашем корневом приложении

{
  ...,
  OTHER_APP_URL: 'localhost:4201'
}

prod.environment.ts

{
  ...,
  OTHER_APP_URL: '/otherApp'
}

Тогда в вашем компоненте

....
import {environment} from '<path to environments file>';

@Component({
  selector: 'my-component',
  template: '<a [href]="otherAppUrl"></a>'
})
export class MyComponent implements OnInit {
  otherAppUrl: string;

  ngOnInit() {
   this.otherAppUrl = environment.OTHER_APP_URL;
  }
}

Вам, вероятно, потребуется сделать что-то подобное в других приложениях, чтобы вы могли перенаправить их в корневое приложение или другие дочерние приложения. Вам, вероятно, также понадобится создавать другие приложения с флагом --baseHref при сборке для производства, чтобы их ресурсы были доступны. Смотрите здесь для получения дополнительной информации из документов: https://angular.io/cli/build


Старый ответ - не относится к вопросу

Глядя на ваш репозиторий, я не вижу terms.txt в папке ресурсов вашего корневого проекта. Я проверил, находится ли он в одной из других библиотек в репозитории, но также не смог найти его там.

Если это актив, который включен или на который ссылается компонент или служба в одной из ваших библиотек, вам нужно будет скопировать его в выходную папку библиотеки как часть процесса сборки, поскольку эта функциональность не является в настоящее время поддерживается Angular CLI .

Пример сценария сборки, который может сделать это за вас:

ng build my-lib-with-assets --prod && cp -r projects/my-lib-with-assets/src/assets dist/my-lib-with-assets && ng build --prod

Не забывайте, что вам нужно собирать свои библиотеки перед тем, как создавать основной проект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...