Почему я не могу обслуживать статические файлы с роутера Koa? - PullRequest
0 голосов
/ 21 января 2019

Почему в следующем случае 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

1 Ответ

0 голосов
/ 01 февраля 2019

По сути, это то, как у нас настроены вещи в нашем приложении.

Используется 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 ) ;
...