dist资源包放入springboot运行遇到的问题

1、在vue、react使用npm run build打包

将dist包放入resources下

2、通过浏览器访问本地

在访问路径会出现404,打开dist包下的index.html发现打包后的指向样式不对,更改指向后,发现还是404

把拦截器修改为排除所有路径后,页面不再404,说明资源没有显示。修改资源静态映射指向dist后可以显示,但是路径上会显示localhost:8999/dist/login
将所有请求路径添加映射后用localhost:8999/login可以访问

完整配置代码

@Configuration
public class AppConfig implements WebMvcConfigurer {
    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new TokenInterceptor(redisTemplate))
                // 添加需要拦截的路径模式,表示所有以 "/api/" 开头的路径都会被拦截
                .addPathPatterns("/api/**")
                // 添加不需要拦截的路径模式,表示登录接口不会被拦截
                .excludePathPatterns("/api/login");
    }

    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        // 允许所有来源的请求
        config.addAllowedOrigin("*");
        // 允许所有 HTTP 方法
        config.addAllowedMethod("*");
        // 允许所有请求头
        config.addAllowedHeader("*");
        // 暴露自定义响应头 "token"
        config.addExposedHeader("token");
        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
        // 将 CORS 配置应用于所有路径
        configSource.registerCorsConfiguration("/**", config);
        return new CorsFilter(configSource);
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        // 将根路径 "/" 的请求重定向到 "/index.html"
        registry.addViewController("/").setViewName("forward:/index.html");
        WebMvcConfigurer.super.addViewControllers(registry);
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 添加资源处理器,用于映射静态资源路径
        registry.addResourceHandler("/**").addResourceLocations("classpath:/dist/");
        WebMvcConfigurer.super.addResourceHandlers(registry);
    }
posted @ 2024-04-21 20:11  Kang_kin  阅读(44)  评论(0编辑  收藏  举报