我有以下功能:
app.use('/Framework', express.static(path.resolve(__dirname, 'Framework')));
app.get('/*/*', function (req, res, next) {
...code...
);
请求同时包含app.use
和app.get
。我希望当我尝试使用/Framework
访问资源时,它只是将其作为静态赋予我,而忽略了下面的其他函数。然而,当访问静态时,它似乎进入了app.get
。
为什么会发生这种情况?我如何修改它以获得想要的行为?
因评论而修改
我也有
app.use('/Public', express.static(path.resolve(__dirname, 'Public')));
之前按预期完美运作。
诸如/Public/0.png
之类的请求在/Framework/0.png
等请求同时输入这两个函数时起作用。我一遍又一遍地检查文件夹名称,它们是正确的。
答案 0 :(得分:0)
Express-static是Express中间件。中间件链接在一起,在中间件执行完代码后,它在内部调用next();
以允许下一个中间件执行。执行完所有中间件后,将执行路由。
由于快速静态调用next();
完成后,如果任何路由与请求匹配,将调用并检查路由。由于您的请求/Public/0.png
与您的路由/*/*
匹配,因此路由已执行。
/*/*
重命名为更具体的路线。/*/*
的请求,但会拒绝任何附加了文件扩展名的路由(即/*/*.png
)。/*/*
路由中的headersSent。附注:
了解您的路线名称(例如公共和框架)与您的目录名称相同,您只需执行
app.use('/', express.static(path.resolve(__dirname, PARENT_DIRECTORY)));
PARENT_DIRECTORY是Public
和Framework
的父目录。这样
您的目录结构如下所示:
Directory
|
| ---- Public
| ---- Framework
对Public
的任何请求最终都会从Public
目录中提供文件,对于Framework
目录也是如此。