У меня есть приложение Jhipster (4.14.3), в котором изображения загружаются из сторонних источников в cron @Scheduled и используются как статические ресурсы. При запуске проекта в целях разработки с mvnw -Pdev,webpack и yarn start образы недоступны. При упаковке и проведении войны ресурсы доступны, как и ожидалось.
mvnw package -Pdev -DskipTests && java -jar target\foo-0.0.1-SNAPSHOT.war
localhost:8080/images/FOO/someimage-0.png: работает localhost:9000/images/FOO/someimage-0.png: не удается получить /images/FOO/someimage-0.png
Ниже я настроил обработчик ресурсов для внешних ресурсов. Все удаленные образы загружаются в этот каталог.
@Configuration
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
String s = Paths.get(System.getProperty("user.home"), "images").toString() + File.separator;
registry.addResourceHandler("/images/**")
.addResourceLocations("file:///" + s);
}
}
Местоположение изображения извлекается из базы данных и отображается:
<img [src] = "entry.photo.location"> => '/images/FOO/someimage-0.png'
Есть ли способ настроить Spring или Webpack, чтобы я мог просматривать ресурсы во время разработки?
Попробуйте добавить прокси-путь в webpack/webpack.dev.js (около строки 20), это может объяснить, почему порт 8080 работает, но порт 9000 (прокси-сервер webpack) не работает.
Основываясь на том факте, что он работает с портом 8080, но не с портом 9000, проблема связана с прокси-сервером Webpack. В файле webpack/webpack.dev.js добавьте /images в конфигурацию прокси. Это проксирует localhost:9000/images на localhost:8080/images.
Окончательная конфигурация должна выглядеть так:
proxy: [{
context: [
'/images', // **Add this line**
/* jhipster-needle-add-entity-to-webpack - JHipster will add entity api paths here */
'/api',
'/management',
'/swagger-resources',
'/v2/api-docs',
'/h2-console',
'/auth'
],
target: 'http://127.0.0.1:8080',
secure: false
}],
Полагаю, я могу сделать это в целях тестирования. Новые изображения загружаются непрерывно, поэтому любые новые изображения, загруженные после их размещения в
/resources/static, будут повреждены. Я бы хотел, чтобы изображения не попадали в сам проект.