2017-10-14 43 views
0

我有一個與NodeJS服務器一起運行的Angular應用程序。用Express代替app.get('*',func)路由

這段代碼在我的server.js文件:

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

require('./server/routes/routes')(app, passport); 

好像是防止任何GET請求我的API,例如:

module.exports = function (app, passport) { 
    app.get('/api/profile', isLoggedIn, function (req, res) { 
     res.status(200).json(req.user); 
    }); 

當導出/ API/profile文件處理程序更改爲請求發揮作用的帖子。

該路由不應覆蓋初始處理程序?如何實現這一目標?我可以爲除「/ api」之外的所有路線提供應用嗎?

回答

1

移動app.get('*')所以它變成被聲明的最後一個路線:

require('./server/routes/routes')(app, passport); 

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

快速判斷路由處理器在他們聲明的順序,而不是它們的特異性的順序(以及他們如何匹配特定要求)。