2017-11-18 236 views
0

我部署了一个带有延迟加载的角度应用程序。当在Github.io域中托管应用程序时,该应用程序运行良好,但当我使用mobaxterm在Tomcat服务器上部署应用程序时出现错误。当页面重新加载或刷新应用程序失去路由状态并引发404错误。404刷新角度(v4 +)时部署在tomcat服务器上的错误

HTTP状态404 - /查询

类型状态报告

消息/查询

描述所请求的资源不可用。

的Apache Tomcat/7.0.72

控制台,登录:: GET http://appv2.proctur.com/enquiry/addEnquiry 404(未找到) 导航到http://appv2.proctur.com/enquiry/addEnquiry

如果我不刷新页面,并使用该应用程序在一个去那么它的好吧,只是无法理解刷新时的问题。

PS ::这是我第一次在tomcat服务器上托管一个角度应用程序,如果我犯了任何愚蠢的错误,请让我知道。

为了更好的阐明,我添加了routing.module.ts,我懒加载模块。这是导入到app.module.ts ::

import { NgModule } from '@angular/core'; 
import { RouterModule } from '@angular/router'; 

@NgModule({ 
imports: [ 
    RouterModule.forRoot([ 
     { path: '', redirectTo: '/authPage', pathMatch: 'full' }, 
     { path: 'authPage', loadChildren: 'app/components/auth-page/auth-page.module#AuthPageModule' }, 
     { path: 'course', loadChildren: 'app/components/course/course.module#CourseModule' }, 
     { path: 'enquiry', loadChildren: 'app/components/enquiry/enquiry.module#EnquiryModule' }, 
     { path: 'student', loadChildren: 'app/components/students/student.module#StudentModule' }, 
    ]) 
], 
exports: [ 
    RouterModule 
] 
}) 
export class AppRoutingModule { 
} 
+0

你正在使用哪种路由模式?像'html5'? 'hashbang'?我的网址中没有看到任何'#/#!' –

回答

0

当角度应用程序加载第一次URL将服务器从服务器。当你浏览页面时,它会在客户端处理。当刷新页面时,请求将转到服务器(tomcat或节点)。但是路由网址在服务器上不存在。然后出现404错误。你可以通过HashLocationStrategy来解决,在路由配置中添加{useHash:true}对象。

RouterModule.forRoot(routes, {useHash: true}) 

更多细节: - https://codecraft.tv/courses/angular/routing/routing-strategies/#_hashlocationstrategy

0

以前的答案是正确的,但我们并不真正需要在我们的网址-S哈希值。问题如下:例如,如果我们有一个名为'/ users/all'的路由,并在我们的应用内从'/'导航,那么它完全没问题,因为Angular自己的路由器会解析路由并显示页面,但如果我们直接去那条路线,例如通过在浏览器地址栏中输入网址,我们会得到404,为什么?因为你的服务器(在你的情况下是tomcat)将尝试在其中找到一个名为'users'和一个'all'文件的文件夹,显然这是不存在的,因为它仅仅是一个Angular路由,而不是一个实际的文件你的服务器的系统。但您可以通过某种方式配置服务器,它将回退到包含应用程序的index.html文件,以便页面正确显示(在我们的示例中,服务器将返回index.html,那么Angular应用程序将会运行并解决路线)。 了解更多关于here

相关问题