在AWS Elasticbeanstalk中进行部署时,网页资源未加载

时间:2019-07-15 09:10:43

标签: java amazon-web-services spring-boot jar war

我正在运行带有React前端的Spring Boot服务器。我已经将React Project构建到生产环境中,并将构建内容复制到spring项目中的Webapp文件夹中。当我在本地运行它时,它工作得很好,但是当我将WAR上传到AWS时,We​​b内容显示了Whitelabel错误页面。

WhiteLabel Error Page when hosted in AWS

我尝试将包装更改为JAR,因为AWS日志称Webapp正在启动JAR。但是,即使使用JAR打包,也可以在本地而不是在AWS中正常工作。  以下是我用来将'/'请求定向到src / main / webapp中的index.html文件的WebMvc配置文件

public class WebMvcConfig implements WebMvcConfigurer {

    private final long MAX_AGE_SECS = 3600;

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("HEAD", "OPTIONS", "GET", "POST", "PUT", "PATCH", "DELETE")
                .maxAge(MAX_AGE_SECS);
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("/");
    }
}`

1 个答案:

答案 0 :(得分:0)

默认情况下,Spring Boot允许将Web文件存储在/ public或/ static或/ resources中,而不是存储在/ webapp中。这些位置无需通过config添加,我只需要添加一个空的控制器类即可。

我删除了addResourceHandler函数,创建了一个空的控制器类

@Controller
public class MyClass{}

,然后将我的Web文件移动到/ resources / public文件夹。 Spring Boot负责配置。 为什么它在本地可以正常运行而不能在AWS上运行仍然是一个谜。

阅读此报价以及我的问题的解决方案。认为值得分享。

语录:“在代码中减少错误的唯一方法是,尽可能不编写代码。使用已经提供的内容,即使需要进行一些研究,还是值得的。”