2016-09-14 9 views
0

私は、UIルーターとExpressの相互作用に奇妙な問題があります。 私はどこからでも解決策を探しましたが、問題を完全に修正するものはありません。UIルーター+ノード/エクスプレスJSページが望ましくなく読み込まれる

私のアプリケーションが私の/ publicフォルダにあり、私が/ random/path(ui-sref="post/new">)に直接行くたびに、私が/ links/browser.ButをクリックするとURLが変わってきます。この経路は存在しないと言う。

私はその問題に関するトピックから使用してその問題を修正しました:私は先のパスに直接移動するたびに

app.use('/', express.static(__dirname + '/public')); 


    app.use(function (req, res) { 
     res.sendFile(__dirname + '/public/'); 
    }); 

そして今、すべてが正常に動作しています。

今や、クライアント側のアプリケーションのように動作し、ビュー+コントローラをロードするだけでなく、ページ全体がすべてのパスの変更でリロードされるという新たな問題があります。

奇妙なことは、2つまたは3つのパスで期待どおりに動作していることです。

誰でも手助けできますか?

編集:

angular.module('App').config(function($stateProvider, $locationProvider,$urlRouterProvider) { 
    $locationProvider.html5Mode(true); 

    $urlRouterProvider.otherwise('/'); 
     $stateProvider 
      .state('posts-new', { 
       url:'/post/new', 
       templateUrl: 'tmpl1.html' 
      }) 
      .state('posts', { 
       url:'/posts', 
       templateUrl: 'tmpl2.html' 
      }); 
    }); 

私はまた、ベースURL /及び<base href="/index.html">

+0

ui-router設定を含めることができますか?私はあなたがelse節を追加したいかもしれないと思う。 –

+0

完了しました –

答えて

0

ので、あなたのNodeJSルートが存在しないよしが、理由はあなたのルートであり、両方を試してみました。 これは/public/index.htmlと解釈されるので、/の場合は問題ありません。
/post/newをロードしようとすると、/public/post/new/index.htmlが検索されません。 以下の修正が有効です。

app.use(function (req, res) { 
    res.sendFile(__dirname + '/public/index.html'); 
}); 

次に、基本的に静的なファイルとしてテンプレートを提供するための少し別の方法が必要です。私は個人的には、以下に示すようにテンプレート用の単純なフォルダを使用することをお勧めします。上記のキャッチオールルートが以上であることを確認してください。

app.use('/templates', express.static('/public/templates')); 

ああ、そして最後に - あなたは/に設定あなたの<base>タグをお勧めします。

+0

すべてこれは悲しいことです:( –

+0

あなたはすべての部品を一緒にする必要があります - 1つしか完了していない場合は、まだ破損しています。ファイル、またはあなたのテンプレートが正しくロードされないため、再ロードの問題が発生します –

+0

どの部分が不足していますか?3つの部分すべてがありますが、重要なものがありません。すべてのページを参照してください それはちょうどそれをクリックしたときにui-sref全体のページがリロードされます(場合によってのみ)、しかしまだ適切なルートを提供します。 srefはコントローラ+テンプレートを読み込む代わりにページをリロードします。 –

関連する問題