2017-07-17 9 views
0

現在、角度2のアプリケーションを開発中です。しかし、なぜ私のルーティングがng serveで動作し、nodemonでは動作しないのか分かりにくいですか?私は、私が研究しているものに基づいて複数の方法を試しました。角度2ルーティングは、サービングでのみ動作し、ノーデモンでは動作しません

app-routing.module.tsuseHash: trueを追加する方法1

しかし、(おそらく私の理解不足に起因する)これは、すべてのURLが#がそれに表示される持たせるでしょう。そして、私はこれが正しいデバッグのためのものだと思っていますか?エラーがスローされるたびに

const routes = [ 
{ path: '', component: sampleComponent1 }, 
{ path: 'page2', component: sampleComponent2 } 
]; 

@NgModule({ 
    imports: [RouterModule.forRoot(routes, {useHash: true})], 
    exports: [RouterModule] 
}) 

方法2

変更app.jsindexをレンダリングします。このメソッドはURLに#を持っていませんが、私のコンソールには常にGET /page2 404 1.688 ms - 987のようなエラーが返されます。 URLはそれで#が表示されないよう

app.use(function (err, req, res, next) { 
    // set locals, only providing error in development 
    console.log(err.message); 
    res.locals.message = err.message; 
    res.locals.error = req.app.get('env') === 'development' ? err : {}; 

    res.status(err.status || 500); 
    res.render('error'); 
}); 

は、だから今のように、私は方法2にもっとこだわっんだけど、方法2は、それを行うための正しい方法がある場合、私はよく分かりません。誰かが私にこれを助けることができますか?

+0

'useHash'はデバッグ用ではありません。これはデザインの選択肢です。 – HaveSpacesuit

+0

nodemonでdistフォルダをビルドして提供しようとしましたか? – Janpan

+0

@Janpanはい、私はいつもこれは私が右の方法2で行ったのと同様に聞こえる – JustStarted

答えて

0

これは角度CLIでの開発で働く理由は存在しないすべてのルートは、これはあなたの角度のアプリケーションに関係なく、URLが実際に要求されたもののすべてのルーティングを処理することができます

index.htmlを務めていましたしてしまうことがあります。ブラウザーでアプリケーションを起動すると、Angularルーター(使用しているものと仮定)がルート情報を読み取り、ユーザーに正しいルートを表示します。

この解決方法については、Webサーバーによって異なります。

+0

nodemon実行する前に、NGビルドをやりますか?いつでも私はページをリクエストするたびにエラー404を受け取ります。 'localhost/page2'とindex.htmlが提供されます – JustStarted

+0

B-I-N-G-O !!!はい、404ハンドラはindex.htmlです。 – Brocco

関連する問題