1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| 'use strict'
const debug = require('debug')('koa-static') const { resolve } = require('path') const assert = require('assert') const send = require('koa-send')
module.exports = serve
function serve (root, opts) { opts = opts || {} assert(root, 'root directory is required to serve files')
debug('static %s %j', root, opts) opts.root = resolve(root)
if (opts.index !== false) opts.index = opts.index || 'index.html'
if (!opts.defer) { return async function serve (ctx, next) { let done = false
if (ctx.method === 'HEAD' || ctx.method === 'GET') { try { done = await send(ctx, ctx.path, opts) } catch (err) { if (err.status !== 404) { throw err } } }
if (!done) { await next() } } }
retrun async function serve (ctx, next) { await next() if(ctx.method !== 'HEAD' && ctx.method !== 'GET') return if (ctx.body != null || ctx.status !== 404) return try { await send(ctx, ctx.path, opts) } catch (err) { if (err.status !== 404) { throw err } } } }
|