0

私は角度のアプリケーションがあります。 distフォルダを生成するには、ng build --prod --aotというコマンドを実行します。 は私がStaticfileという名前のファイルを作成したdistのフォルダで、私は次のコマンドを使用してpivotal.ioへのdistフォルダをアップロード:404が見つかりませんnginx angular 4ルーティング

  1. CFプッシュ名-アプリを--no-開始
  2. CFは名前のアプリを起動します

アプリが正常に動作します。私はnav barを持っているので、navbarでパスを変更するとすべて正常に動作します。しかし、私は手動で(私は自分自身にURLを入力する)このエラーがある404見つかりませんnginx。 これは私のapp.component.ts:

const appRoutes: Routes = [ 
    { path: 'time-picker', component: TimePickerComponent }, 
    { path: 'material-picker', component: MaterialPickerComponent }, 
    { path: 'about', component: AboutComponent }, 
    { path: 'login', component: LoginComponent }, 
    { path: 'registration', component: RegistrationComponent }, 
    { 
    path: '', 
    redirectTo: '/time-picker', 
    pathMatch: 'full' 
    } 
]; 

@NgModule({ 
    declarations: [ 
    AppComponent, 
    TimePickerComponent, 
    MaterialPickerComponent, 
    DurationCardComponent, 
    AboutComponent, 
    LoginComponent, 
    RegistrationComponent, 
    ], 
    imports: [RouterModule.forRoot(
    appRoutes 
    // ,{ enableTracing: true } // <-- debugging purposes only 
), 
    FormsModule, 
    BrowserAnimationsModule, 
    BrowserModule, 
    MdCardModule, MdDatepickerModule, MdNativeDateModule, MdInputModule 

    ], 
    providers: [{ provide: DateAdapter, useClass: CustomDateAdapter }], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { 
    constructor(private dateAdapter: DateAdapter<Date>) { 
    this.dateAdapter.setLocale('fr-br'); 
    } 
} 

EDIT

は静的ビルドは自分のアプリケーションには向いていないですか?いったん角型アプリケーションがプロダクトの準備ができたら、次に何をすべきでしょうか?すべてのあなたの反応は私がすでにバックエンド側を持っていると仮定します。あなたは慎重に私の記事を読んでくださいできますか?

+0

これに従ってくださいは、HTTPS:/ /stackoverflow.com/a/40833154あなたのnginx設定ファイルを更新するには – Brilliant

答えて

1

私は最終的に答えた:私はdistのフォルダを生成した後 を。

  • は、私は私が有効になってpushstate: enabled

pushstateが奉仕のJavaScriptアプリケーションのクライアント・サイドのためのクリーンなブラウザ可視URLを保持します。この行を追加Staticfile & を開け

  • Staticfileと呼ばれるファイルを作成しました複数の経路。たとえば、pushstateルーティングでは、単一のJavaScriptファイルが、/ some#path1の代わりに/ some/path1のような複数のアンカータグ付きURLにルーティングされます。

  • 1

    角度アプリケーションは、シングルページアプリケーションです。手動でアドレスを入力すると、アプリケーションが実行されていない場所にルーティングしようとします。

    ベースページにルーティングするには、nginx configを編集する必要があります。

    +0

    私はnginx設定をしていません。私がやった唯一の手順は、私が上で書いたものです。私はStaticfileを追加してdistフォルダをプッシュしました。 – Melchia

    +0

    https://stackoverflow.com/questions/39612339/how-can-i-deploy-my-angular-2-typescript-webpack-app – Carsten

    +0

    nitalxをpivotal.ioに設定する方法。フロントエンド側にはサーバー側がありませんでした。 – Melchia

    2

    これは、サーバ側の問題であり、角側の問題ではありません。あなたのケースでは、リクエストごとにインデックスまたはランディングページを返すのはサーバーの責任です。nginx任意の手段によって、あなたが設定することができ、バックエンドまたはサーバーをお持ちでない場合は

    UPDATEは

    この2つの回避策があります。 index.htmlをファイルにいくつかの微調整を作る角度

  • HashLocationStrategyを使用して

    ない
  • +0

    私はこの問題の回避策を持っていませんが、あなたがnginxの設定方法で行きたいと思っているのですが、[link](https://rahulrsingh09.github.io/AngularConcepts/faq)最後の1人] –

    +0

    私はあなたに、Angularアプリケーションを作成していたことを既に伝えました。私はバックエンドでは何もしていません – Melchia

    +0

    これはフロントエンドだけの回避策ですので、コメント先のリンクを確認してください。その変更をindex.htmlで行う必要があります。私も答えで更新されます –

    1

    スタティックファイルこれを試してみてください。

    私は、nginxが角度をつけているのと同じ問題を抱えていました。 次はyoursite /おそらくどこかで見つかったの/ etc/nginxの/サイト利用可能な、デフォルトの設定ファイルである

     location/{ 
          # First attempt to serve request as file, then 
          # as directory, then fall back to displaying a 404. 
          try_files $uri $uri/ /index.html; 
        } 
    

    しかし、私たちがacctuallyたいことはある...

     location/{ 
          # First attempt to serve request as file, then 
          # as directory, then redirect to index(angular) if no file found. 
          try_files $uri $uri/ /index.html; 
        } 
    
    +0

    はい、あなたは正しいです。この方法も有効です。しかし私の場合、私はPaaSであるPWSを使用していたので、うまく動作しませんでした。それが将来の人々を助けるかもしれないが、+1 – Melchia

    関連する問題