在我的 server.ts 文件中,该行
app.get('/example', express.static('somefolder'));
给我一个 404,而
app.use('/example', express.static('somefolder'));
正确地从“somefolder”提供“index.html”作为对“myhost/example”请求的响应。
根据明确的文档,这些在 GET 请求中的行为应该完全相同。为什么一个有效而另一个无效?
最佳答案
这两种方法的不同之处(除其他外)在于如何 req.path
已填充:
- 对于
app.get('/example')
,它设置为/example/
- 对于
app.use('/example')
,它设置为/
当使用express.static()
时,这意味着静态中间件在内部会将请求路径转换到不同的位置:
- 对于
app.get('/example')
,它将在somefolder/example/
中查找 - 对于
app.use('/example')
,它将在somefolder/
中查找
您可以通过创建 somefolder/example/
并将 index.html
文件复制到其中来轻松测试;当您这样做时,app.get()
路由也将起作用。
关于node.js - 为什么express.static可以与app.use一起使用,但不能与app.get一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44499667/