Подавайте статические файлы с помощью Koa2

Как я могу обслуживать статические файлы с помощью Koa2, когда кто-то посещает маршрут? Я пробовал миллионы вещей, и я всегда получаю сообщение о том, что не найден. Сервер ответил со статусом 404

import 'babel-polyfill'
import co from 'co'
import path from 'path'
import render from 'koa-swig'
import Koa from 'koa'
import Router from 'koa-router'
import serve from 'koa-static'
import convert from 'koa-convert'
import send from 'koa-send'

const app: Koa = new Koa()
const route: Routerr = new Router()

**example 1**

app.use(serve(path.resolve(__dirname + '/public/index.html')))

router.get('/lista', function *() {
  console.log('Hello')
})

**example 2**

app.use(async (ctx) => {
  await send(ctx, '/index.html', { root: '/public' })
})

router.get('/lista', function *() {
  console.log('Hello')
})



app.use(router.routes())
app.use(router.allowedMethods())

person Igor-Vuk    schedule 14.03.2017    source источник


Ответы (2)


Некоторое время назад я сделал несколько простых прототипов приложений Koa 2 и в основном просто скопировал примеры со страниц модуля. К сожалению, это означает, что я действительно не могу сказать вам, как это работает, но у меня кое-что получилось, и это выглядит примерно так (с использованием ES2016):

const serve = require('koa-static');
const mount = require('koa-mount');
const Koa = require('koa');

const static_pages = new Koa();
static_pages.use(serve('static'));

const app = new Koa();
app
    .use(mount('/static', static_pages))

Это "монтирует" /static как корень для всех статических страниц, расположенных в локальном каталоге static.

person Some programmer dude    schedule 14.03.2017

Это аналогичный подход, о котором упоминал @Some программист, но без использования mount.

import Koa from 'koa';
import serveStatic from 'koa-static';

const app = new Koa();
app.use(serveStatic(__dirname + '/public'));
person aravindaM    schedule 26.07.2017