繁体   English   中英

使用Angular应用作为静态资源进行Spring Boot War部署

[英]Spring Boot war deployment with Angular app as static resource

我有一个Spring Boot后端和Angular前端应用程序,只需将Angular应用程序复制到Spring Boot应用程序的resources/static文件夹中,便可以从它们成功创建可运行的jar文件。

运行jar可以正常工作,我可以在localhost:8000上访问应用程序(因为我将server.port属性设置为8000 ),并且可以按预期工作。

现在,我想创建一个可部署的war文件而不是可运行的jar并在Tomcat中部署该应用程序,因此我已经应用了war插件并声明了以下gradle依赖项(按照本指南 ):

providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'

现在,该构建成功生成了一个war文件,Tomcat可以部署并启动它,而没有任何错误。 部署后,可以在localhost:8080/myapp使用该应用程序

问题是当我实际打开应用程序时,它似乎试图从错误的位置获取Angular资源,从而导致404错误:

在此处输入图片说明

如您所见,它尝试从localhost:8080/filename提取Angular文件,但是我认为它应该是localhost:8080/myapp/filename (尽管我不确定)。

我尝试将server.servlet.context-path属性更改为/myapp ,但没有任何效果(我想这只会影响嵌入式容器)。

我非常感谢有关如何解决此问题的任何建议。

我已经设法解决了。

首先,我必须将Angular应用在index.html中的基本href从/更改为./如下所示:

<base href="./">

进行此更改后,Angular资源不再抛出404错误,但后端端点仍然存在。

我的环境中有以下内容: prod.ts

export const environment = {
  production: true,
  API_URL: '/api'
};

我通过此API_URL调用后端端点,因此我也必须以类似的方式进行更改:

API_URL: './api'

这些更改后,一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM