2016-12-03 11 views
0

私のAngularJSアプリケーションは、/ loginに直接アクセスするときに/ loginにルーティングしません。最初にアクセスした/から/ to/loginへのルートを指定すると、/ loginにルーティングされます。ルーティングはHerokuサーバではなくローカルで動作します

私のローカル環境では動作しますが、Herokuサーバでは動作しません。 Herokuサーバーで設定する必要のある設定はありますか?

私は、角度ui-routerを使用して、アプリケーション全体でさまざまな状態にルーティングしています。

マイapp.js設定スニペットは次のようになります。

angular.module('app', [ 
angularUiRouter 
]) 
.config(($stateProvider) => { 
    "ngInject"; 

    $stateProvider 
     .state("home", { 
      url: "/", 
      template: "<home></home>" 
     }) 
     .state("login", { 
      url: "/login", 
      template: "<login></login>" 
     }); 
}) 
+0

あなたのURLからハッシュ前髪を削除するには、 'html5mode'を使用していますか?それはあなたのためにその設定を処理するNode Webサーバをローカルで実行している可能性がありますが、Herokuではそうではありません。 – mcranston18

+0

実際に設定しています $ locationProvider.html5Mode(true).hashPrefix( '!'); –

答えて

1

自分の質問に答えます。

このアプリケーションのセットアップではMEANスタックを使用しているため、サーバー側からクライアントへのルーティングも追加する必要があります。 AngularJSのすべてのテンプレートの場合

は、我々が要求を取得し、応答 中のindex.htmlを送信するために必要な角度で作成されたすべてのテンプレートとルーティングのための

をindex.htmlにするAngularJSへエクスプレスからのルーティングが存在しなければなりませんAngularjs ..でルーティングするためにangularjs stateProviderを使用していますが、サーバ側から/dist/index.htmlへのルーティングも追加する必要があります。 $ locationProvider.html5Mode(true).hashPrefix( '!'); AngularJS側

私Server.jsファイルのスニペットにapp.jsで定義する必要があります。

var express = require('express'); 
var app = express(); 

app.use(express.static(__dirname + '/dist')); 
app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/dist/index.html'); 
}); 
app.get('/login', function(req, res){ 
    res.sendFile(__dirname + '/dist/index.html'); 
}); 
関連する問題