2017-04-27 121 views
0

我正在學習使用Angular 1和Express進行身份驗證。我已經爲測試目的設置了後端,現在我正在開發前端。我已經建立了基本路線。表示+角路由問題

這是核心,以我的前端:

function router($stateProvider, $urlRouterProvider, $locationProvider) { 
    $urlRouterProvider.otherwise('/'); 

    $stateProvider 
    .state('home', { 
     url: '/', 
     templateUrl: 'views/home/', 
     controller: 'mainController' 
    }) 
    .state('login', { 
     url: '/login', 
     templateUrl: 'views/login/', 
     controller: 'loginController' 
    }); 

    $locationProvider.html5Mode(true); 
} 

這裏是在後端,這將是相關的路線:

app.use(express.static(path.join(__dirname, 'public'))); 

app.get('/', function(req,res){ 
    res.sendFile(path.join(__dirname, 'public/', 'index.html')); 
}); 

唯一的其他路由我是我API,它使用常量apiRouter並將/api/注入這些路線。

現在,我試圖直接從瀏覽器訪問路由時出現問題。我曾經厭惡localhost:8080/login我得到錯誤Cannot GET /login,但在我的索引頁上使用ui-sref,它似乎工作得很好。

任何想法?

回答

0

所以我想出了我的問題是什麼。

我的根路徑後,在我的服務器上的文件GET語句,我需要添加以下代碼:

app.get('*', function(req,res){ 
    res.sendFile(path.join(__dirname, 'public/', 'index.html')); 
}); 

發生了什麼事,是表達試圖發現我定義的/login路線。問題是,該路由需要由Angular處理,而不是Express,因此'*'對於Express不知道如何明確處理的任何路由都適用,然後將該責任交給index.html文件。