Служите статическим файлам с 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())

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,

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

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

const app = new Koa();
app.use(serveStatic(__dirname + '/public'));
Другие вопросы по тегам