2016-05-03 12 views
4

,/profile、さらに/のルートが完全に動作します。これは、サーバーがデフォルトの.htmlファイルと角度ファイルを送信するためです以下のサーバーコードのため)、これらのアングルファイルは現在のURLを処理します。2つ以上の '/'を含むルートを再表示すると、角度が

/(ルートパラメータを使用する場合に必要です)のルートでリフレッシュを押すと、問題が発生します。/manage/users/user/12345678 ...などです。

そして、jQueryはこの奇妙なエラーUncaught SyntaxError: Unexpected token <をスローし、ブートストラップはjQueryを取得できないと不平を言うようになり、ページは化粧なしで気になるように見えます。

私は複数の/を持つルートを訪問したときにだけ($state.go('/manage/users')<ui-sref='profile'>などを使用して)アンギュラ自身のルータを使用することによって、明確にするために、この問題は、(明らかに)発生していない場合、角度がすでにロードされているので、そのURLを処理する

しかし、ページを更新すると、そのルートを処理するAngularがないため、ブラウザはサーバーにルートを尋ね、明らかにExpressの/*はこのルートも処理できません。すべてのAPIのルートを処理した後

app.all('/*', function(req, res, next) { 
    // Just send the index.html for other files to support HTML5Mode 
    res.render('index.html'); 
}); 

私はで私のサーバーからの.htmlファイルを提供しています。 index.html(うまくいけば)は後ですべての角度ファイルを読み込みます。

app.all('**/*', function(req, res, next) { ... }); 

... /の任意の数で、任意の経路でHTMLをレンダリングする:

のようなものはありますか?おそらく正規表現のいくつかの種類ですか?あなたの "頭" でベースを設定する必要が

TIA

+0

あなたはhtml5Modeを使用していますか? – QoP

+0

@QoP $ locationProvider.html5Mode(真)を使ってうん、 –

+0

@QoP OK! $ locationProvider.html5Mode(false)を設定すると、問題が魔法のように解決されます。しかし、アプリケーションルートの前に '#!'(hashbang)を置いてください。私はFacebookの共有を実装しているので、それも削除する必要があります、そして、明らかに、それはhashbangsで動作しません –

答えて

1

<head> 
    <base href="/"> 
    ... 
</head> 
関連する問題