Webpack - обслуживание внешних статических ресурсов в процессе разработки

У меня есть приложение 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, чтобы я мог просматривать ресурсы во время разработки?

Полагаю, я могу сделать это в целях тестирования. Новые изображения загружаются непрерывно, поэтому любые новые изображения, загруженные после их размещения в /resources/static, будут повреждены. Я бы хотел, чтобы изображения не попадали в сам проект.

Jaym 23.04.2018 19:25

Попробуйте добавить прокси-путь в webpack/webpack.dev.js (около строки 20), это может объяснить, почему порт 8080 работает, но порт 9000 (прокси-сервер webpack) не работает.

Jon Ruddell 23.04.2018 20:03
0
2
140
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Основываясь на том факте, что он работает с портом 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
    }],

Другие вопросы по теме