要配置我的Expressjs应用程序,我有这两行(等等):
...
app.use(express.static(__dirname + '/public'));
app.use(app.router);
...
我已经读过,建议将路由器置于静态之前,但是当我执行Angularjs应用程序时,会呈现一个空白页面。当它们按所示顺序显示时,视图会正常呈现。
为什么会这样?
答案 0 :(得分:8)
最好用一个例子来解释。比方说,你有一个en.json
文件,你也有一条路线:
app.get('/en.json', function(req, res) {
res.send('some json');
});
如果你把
app.use(app.router);
前
app.use(express.static(__dirname + '/public'));
路由器将优先于静态文件,用户将看到some json
,否则将提供en.json
文件。
因此,如果您没有这样的碰撞,那么您选择的订单无关紧要。
P.S。请注意,如果您使用的是Express 4,则可能会看到以下错误:
Error: 'app.router' is deprecated!
Please see the 3.x to 4.x migration guide for details on how to update your app.
在维基页面@HectorCorrea已经在评论中分享了这个错误的解释:
no more app.use(app.router)
All routing methods will be added in the order in which they appear
希望这有帮助