2017-11-18 7 views
0

遅延アプリケーションを展開しました。アプリケーションはGithub.ioドメインでホストされていると完全に動作しますが、mobaxtermを使用してtomcatサーバーにアプリケーションをデプロイするとエラーが発生します。ページがリロードまたはリフレッシュされると、アプリケーションはルーティング状態を失い、404エラーをスローします。404 Tomcatサーバーに展開された角度(v4 +)のリフレッシュでエラーが発生しました。

HTTPステータス404 - /問い合わせ

タイプステータスレポート

メッセージ/照会要求されたリソースが利用できない

説明。

のApache Tomcat/7.0.72

コンソール・ログイン:: http://appv2.proctur.com/enquiry/addEnquiry 404(見つかりません)GET ナビゲートhttp://appv2.proctur.com/enquiry/addEnquiry

に私はページを更新し、一度にアプリを使用しない場合は、そのOK、問題がリフレッシュされていることを理解できません。

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'?あなたのURLに '#/#! 'は表示されません –

答えて

0

角度アプリの負荷初めてのURLがサーバーから機能しますとき。ページをナビゲートすると、クライアント側で処理されます。ページをリフレッシュすると、リクエストはサーバー(tomcatまたはノード)に送られます。そのルーティングされたURLはサーバー上に存在しません。 404エラーになります。あなたはHashLocationStrategyで解決することができ、ルーティング設定の{useHash:true}オブジェクトを追加しました。

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

詳細: - https://codecraft.tv/courses/angular/routing/routing-strategies/#_hashlocationstrategy

0

前の答えは正しいですが、私たちは本当に私たちのurl-s内のハッシュを必要としません。たとえば、「/ users/all」という名前のルートがあり、そのアプリケーション内で「/」からナビゲートした場合、Angularのルーターがルートを解決してページに表示されますが、そのルートに直接移動するとブラウザのアドレスバーにURLを入力すると、404が表示されます。なぜですか?あなたのサーバ(あなたの場合はtomcat)は 'users'という名前のフォルダとその中の 'all'ファイルを見つけようとするので、実際には存在しないAngularルートであるため、サーバーのシステム。しかし、あなたはサーバーをある方法で設定することができます。それはアプリケーションを含むindex.htmlファイルにフォールバックされるので、ページは正しく表示されます(例の場合、サーバはindex.htmlを返します。ルートを実行して解決してください)。 この詳細についてはhereをお読みください。

関連する問題