【问题标题】:Web Page Resources Not Loading while deploying in AWS Elasticbeanstalk在 AWS Elasticbeanstalk 中部署时未加载网页资源
【发布时间】:2019-11-23 23:12:32
【问题描述】:

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

WhiteLabel Error Page when hosted in AWS

我尝试将包装更改为 JAR,因为 AWS 日志表明 Webapp 正在启动 JAR。但即使使用 JAR 打包,一切都在本地运行良好,而不是在 AWS 中。 下面是我的 WebMvc 配置文件,用于将我的“/”请求定向到 src/main/webapp 中的 index.html 文件

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("/");
    }
}`

【问题讨论】:

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


    【解决方案1】:

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

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

    @Controller
    public class MyClass{}
    

    并将我的网络文件移动到 /resources/public 文件夹。 Spring Boot 负责配置。 为什么它在本地运行良好而在 AWS 中却没有运行,对我来说仍然是个谜。

    阅读此引文以及我的问题的解决方案。觉得值得分享。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-24
      • 2017-08-02
      • 2016-11-04
      • 2014-03-02
      • 2015-03-03
      • 2016-09-05
      • 2020-07-01
      • 2021-04-02
      相关资源
      最近更新 更多