node.js - 为什么express.static可以与app.use一起使用,但不能与app.get一起使用

标签 node.js express

在我的 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/

相关文章:

node.js - 捕获node.js中未捕获异常的源或行号

node.js - mongoose 如何管理引用文档中的计数

node.js - Dialogflow webhook node.js - 添加在处理意图后运行的处理程序/中间件

Node.js:如何从回调中正确返回对象?

javascript - 最快的 JavaScript 重定向

node.js - 蒙哥错误: server instance in invalid state undefined

node.js - NodeJS 禁用缓存

python - 基于真实时间、用户时间和系统时间比较两个不同的进程

node.js - MEAN Stack CRUD todolist 给出无限列表,不会删除

node.js - Node [file.js] 与运行浏览器和 nodejs .editor 产生不同的结果