我的静态文件中间件调用被我的路由覆盖,即使我以正确的顺序运行它:
首先,我设置我的静态文件,如下所示:
app.use('/public/', express.static('/home/skerit/temp'));
app.use('/public/', express.static('/home/skerit/app/public'));
然后我添加我的路线:
app.get('/:controller/:action', callback);
而现在,当我尝试获取 /public/empty.txt 时,路由被执行。当我删除路线时,它工作得很好。
而且我确信它们以正确的顺序发生。(首先是 app.use,然后是 app.get)
那么这里有什么问题呢?
编辑:既然我说我以正确的顺序执行它们,这里有一些证据。我在代码的执行中添加了简单的日志语句:
[调试] - [stages.js:186] 静态中间件已设置! [调试] - [stages.js:191] 开始路线! [debug] - [routes.js:7] 设置控制器路由 [info] - [database.js:79] 已建立默认数据库连接 [info] - [database.js:93] MongoDB 服务器默认存储过程 [info] - [database.js:120] 创建到所有数据源的连接 [调试] - [stages.js:202] 设置 /:controller/:action
如您所见:“已设置静态中间件”首先出现。只有这样它才开始设置其他路线。