javascript - 为什么我不能从 Koa 路由器提供静态文件?
问题描述
为什么在以下情况下koa-static
无法使用koa-router
?
const Koa = require("koa")
const serve = require("koa-static")
const Router = require("koa-router")
const app = new Koa()
const router = new Router()
// fails with 404... why?
router.use(serve("public"))
// // this, on the other hand, works
// app.use(serve("public"))
app.use(router.middleware())
app.listen(8080)
// browse to "http://localhost:8080/testfile.txt"
我制作了这个 GitHub 存储库来演示这个问题:koa-router-static-issue
解决方案
这基本上就是我们在应用程序中配置内容的方式。
它用于koa-mount
将静态文件服务器挂载到特定的根 URL。如果您的静态文件 URL 与路由的命名空间重叠,则静态文件胜出。
const Koa = require('koa')
const Router = require('koa-router')
const serve = require('koa-static')
const mount = require('koa-mount')
const app = new Koa()
const router = new Router()
router.get('/public/foobar.txt', (ctx,next) => {
ctx.body = "Ta-Da!"
ctx.status = 200
return;
})
app.use( mount( '/public', serve('./public') ) ) ;
app.use( router.middleware())
app.listen( 8080 ) ;
推荐阅读
- elixir - handle_info 或 handle_call 期间的 Genserver 状态更改
- vba - 将对象添加到另一个 Object VBA
- c++ - 将 BGRA 像素转换为灰度
- python - 在 Python 中填充空字典
- python - ValueError:无法在 Python 3 中将字符串转换为浮点错误
- c++ - 如何使用 buildHeap 方法和 insert 方法构建最小堆?
- python - Python Curses 数字键盘导致程序退出
- c# - Visual Studio 源代码控制 - 在 VSTS 中为特定文件夹创建分支
- symfony - 无法运行简单迁移:指定的密钥太长错误
- excel - Excel - 在多个条件下查找和匹配值