Chciałbym serwować przez Spring strony internetowe wynikające z wbudowania npm i wszystko działa dobrze, ale nie mogłem obsłużyć zasobów o nazwie takiej jak main.xxxx.yyy no ważne, jaki jest prawdziwy sufiks (css, js lub html).Sprężyna obsługująca zawartość statyczną z kropką (kropkami) w nazwie pliku
drzewo katalogów jest tak:
src/main/resource/resource
index.html
asset-manifest.json
favicon.ico
manifest.json
service-worker.js
static
css
main.fc656101.css
main.fc656101.css.map
js
main.91794276.js
main.91794276.js.map
media
banner.bdcf92f4.jpg
fontawesome-webfont.912ec66d.svg
...
Jest to klasa aplikacja:
@SpringBootApplication
public class Application {
private static Logger log=Logger.getLogger(Application.class.getName());
@Bean
WebMvcConfigurer configurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addResourceHandlers (ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/static/*").
addResourceLocations("classpath:/static/");
}
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
super.configurePathMatch(configurer);
configurer.setUseSuffixPatternMatch(false);
}
};
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
Aby debugować problem mam ręcznie przemianowany na niektóre pliki i działa, więc mam ograniczył problem do nazw plików zawierających kropki.
Widziałem, że ktoś rozwiązał podobny problem dodając {zmienną:.} W mapowaniu żądań w kontrolerze, ale nie mam kontrolerów, więc nie mogłem wymyślić, jak to zrobić.
EDIT:
Odkryłam, że przy tej konfiguracji:
@Configuration
class ServletConfig extends WebMvcConfigurerAdapter {
@Override
public void configurePathMatch(final PathMatchConfigurer configurer) {
configurer.setUseSuffixPatternMatch(false);
configurer.setUseTrailingSlashMatch(false);
}
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false);
}
}
Teraz to wszystko służy * .html, zawarte page.01.html, ale nadal nie style.01.css lub script.01.js. Zakładam, że jest inny problem, a oryginalny został rozwiązany przez ContentNegotiationConfigurer.
Dlaczego to tagged npm? Wydaje się, że nie ma to nic wspólnego z node.js. –
Stanie zawartości statycznej kropkami w nazwach plików jest tworzone przez polecenie uruchamiania polecenia npm. – Marcoc1712
Nie sądzę, że jest to istotne dla twojego problemu, ponieważ przypuszczam, że to samo by się stało, gdybyś utworzył te pliki ręcznie, prawda? A jeśli nie, należy o tym wyraźnie wspomnieć. –