Angular 404页,同时在同一端口中运行弹簧和角度传感器
我创建了SpringBoot+angular 8应用程序,它在两个不同的端口(如8080和4200)上成功运行,没有任何问题。然后我决定在同一个端口(8080)上运行应用程序。我运行了Angular 404页,同时在同一端口中运行弹簧和角度传感器,angular,spring,spring-boot,Angular,Spring,Spring Boot,我创建了SpringBoot+angular 8应用程序,它在两个不同的端口(如8080和4200)上成功运行,没有任何问题。然后我决定在同一个端口(8080)上运行应用程序。我运行了ngbuild--prod,得到了dist文件夹。将Dist文件夹移动到spring应用程序中,该文件夹看起来像这样 对应的pom.xml如下所示 <plugin> <groupId>org.apache.maven.plugins</groupId>
ngbuild--prod
,得到了dist文件夹。将Dist文件夹移动到spring应用程序中,该文件夹看起来像这样
对应的pom.xml如下所示
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<outputDirectory>${project.build.directory}/target/classes/static/</outputDirectory >
<resources>
<resource>
<directory>${project.build.directory}/fleetManagement/dist/fleetManagement</directory >
</resource>
</resources>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>woff</nonFilteredFileExtension>
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
<nonFilteredFileExtension>woff2</nonFilteredFileExtension>
<nonFilteredFileExtension>eot</nonFilteredFileExtension>
<nonFilteredFileExtension>swf</nonFilteredFileExtension>
<nonFilteredFileExtension>ico</nonFilteredFileExtension>
<nonFilteredFileExtension>png</nonFilteredFileExtension>
<nonFilteredFileExtension>svg</nonFilteredFileExtension>
<nonFilteredFileExtension>jpg</nonFilteredFileExtension>
<nonFilteredFileExtension>jpeg</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
发生了什么事
在src/main/resources
文件夹中部署应用程序并复制Resources时,您希望Spring为您呈现前端应用程序。但是Spring是一个服务器,作为一个服务器,它为您提供您给他的配置
通过使用server.servlet.context path=/api
,您告诉Spring:所有内容都将以“/api”作为前缀。。。因此,如果您尝试请求:http://localhost:8080/,Spring会告诉你它对这样一个URL一无所知,因为对他来说,所有东西都应该以/api
作为前缀
很自然,你会说:那么,让我们访问http://localhost:8080/api
。但这并不是那么容易。。。我还不知道到底发生了什么,但我猜您的src/main/resources
或src/main/resources/public
中有index.html文件。。。当您尝试访问http://localhost:8080/api
它将尝试在src/main/resources/{public}/api/index.html
中查找index.html文件。。。但它找不到。因此有例外
临时解决办法
我在VueJS和Spring Boot方面也遇到过类似的问题。在不浪费太多时间的情况下,我的解决方案是删除属性server.servlet.context path=/api
,并手动将注释@RequestMapping
作为控制器的前缀
@RestController
@RequestMapping("/api")
public class MyController {
...
}
应该可以,但我不是一个超级粉丝。这可能与你的问题有关。你的应用程序中是否有属性server.servlet.context path=???
属性?可能是同一个@RUAROThibault的副本,是的,谢谢你的快速响应,但解决方案不起作用(
@RestController
@RequestMapping("/api")
public class MyController {
...
}