[英]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.