Ссылка на файл, созданный сервером во время выполнения

В нашем приложении есть процесс создания файлов PDF на сервере и их размещения в папке /assets/files/pdf нашего углового приложения. Затем мы открываем новую вкладку в нашем приложении, чтобы просмотреть этот PDF-файл, созданный сервером.

В версии 4 angular мы смогли открыть новую вкладку с URL-адресом типа http://localhost:4200/assets/files/pdf/3ff6d9d5-f433-4706-b928-b7da9a72a3ed.pdf и иметь возможность просматривать только что созданный PDF-файл.

Однако, начиная с версии 5 angular, в частности 5.2.2, если файл не существовал в папке ресурсов во время компиляции приложения, он никогда не будет отображать файл. Это всегда приводит к 404 не найдено.

Каков правильный способ обработки ссылок на файлы, созданные во время выполнения, или есть ли параметр, который можно указать в командах angular-cli.json или build, который позволяет приложению ссылаться на файлы, которые не существовали в то время, когда приложение был скомпилирован?


person jLee    schedule 26.01.2018    source источник


Ответы (1)


Вы даете очень мало информации о том, как вы на самом деле работаете, но, поскольку в противном случае это не имело бы смысла, я предполагаю, что вы используете ng serve и создаете PDF-файлы в своем angular-app/src/assets -directory?

Если это так, то это потому, что Webpack Dev Server не обслуживает ресурсы с вашего жесткого диска напрямую, вместо этого он копирует их на «виртуальный диск» каждый раз, когда вы компилируете.

Так что вы могли либо

  1. сохраните любой из ваших файлов .ts, чтобы ng serve перекомпилировать

  2. вместо этого запустите ng build --watch, настройте простой http-сервер для обслуживания вашего каталога dist и позвольте вашему другому серверу вместо этого создавать PDF-файлы в dist. Или, что еще лучше, может ли ваш сервер PDF также обслуживать статические файлы? Почему бы не позволить ему обслуживать вашу папку dist, если у вас уже есть сервер.

Способ №. 1 не звучит правильно, потому что /src предназначен для файлов разработки, а не для вещей, сгенерированных сервером, поэтому определенно выбирайте 2. =)

person funkizer    schedule 26.01.2018