Angular 4项目war创建为war时,刷新时会创建白色标签错误

Angular 4项目war创建为war时,刷新时会创建白色标签错误,angular,tomcat,Angular,Tomcat,角度4项目 我们已经为angular 4项目创建了dist文件夹。 我们通过在WEB.xml中包含WEB-INF文件夹,创建了Angular4 dist文件夹的.war文件,并在tomcat中部署了.war文件,并正确部署了该文件 但是,当我们在应用程序的中间从主页的另一个url上刷新时,会显示白色标签错误。我找不到解决这个问题的办法 谁都知道。关于如何解决这个问题 189.233.33.22.com/test/customer这里的问题是因为角度路由器和Tomcat。Tomcat首先读取url

角度4项目 我们已经为angular 4项目创建了dist文件夹。

我们通过在WEB.xml中包含WEB-INF文件夹,创建了Angular4 dist文件夹的.war文件,并在tomcat中部署了.war文件,并正确部署了该文件

但是,当我们在应用程序的中间从主页的另一个url上刷新时,会显示白色标签错误。我找不到解决这个问题的办法

谁都知道。关于如何解决这个问题


189.233.33.22.com/test/customer

这里的问题是因为角度路由器和Tomcat。Tomcat首先读取url并导致404,这将是它自己的白标签错误/404页面,而不是您的角度入口点

最简单的解决方案是在WAR中绑定index.html(虽然在这种情况下最好是.jsp,因此可以添加200 OK响应,而不是404*),并设置Tomcats自定义404页面以在web.xml中指向它

<error-page>
    <error-code>404</error-code>
    <location>/index.jsp</location>
</error-page>

404
/index.jsp
这样,Tomcat将指向您的角度入口点,而角度路由将完成其余工作


*re:200OK,在文件顶部添加
将允许Tomcat使用正确的HTTP响应代码进行响应(因为它在技术上不是404,请确保在角度上正确处理404)。

您在index.html文件中使用了什么基href?我使用,像这样,您需要将其改为
189.233.33.22.com
。基本href必须是主页URL更改dist文件夹中的index.html文件或在cli命令中定义基本href,因为他的基本href对于他想要访问的页面设置不正确。我不明白为什么会出现向下投票,这是将Angular webapps部署为WAR时相当常见的问题,这是一个常见的解决方案。如果它显示一个Tomcat白标签错误页面,那么它将取决于Tomcat,而不是Angular。基本href是不相关的,因为应用程序甚至从来没有达到过角度。在JBoss部署生产战时,我们遇到了完全相同的问题。基本href应该是相对路径,而不是绝对URL。每次您想要更改服务器时,您的方法都需要更改代码。根本不是很好的做法。这就是为什么在项目的index.html中将其保留为
“/”
,并在构建时通过cli对其进行更改。我们也遇到了同样的问题,修复程序正在正确设置url。这不是您在评论中建议的,您明确建议将
更改为
。作为参考,以下所有内容都指向与我类似的解决方案:| |不管如何,考虑到Tomcat的工作方式,我倾向于不同意这种情况。一旦用户转到特定的路由(从基本路由)并刷新,浏览器将从该路由请求index.html,因此如果用户转到
/customer/test/foo/bar
,浏览器将从服务器上的
/customer/test/foo/bar
请求index.html,但它不存在。Tomcat不知道Angular应用程序存在于另一个目录中,将使用404。如果你的解决方案对他有效,那就祝他快乐,但我看不出会有什么效果。