UNPKG

santi

Version:

Isomorphic framework for base on create-react-app and jsdom

30 lines (24 loc) 686 B
const koaStatic = require('./koaStatic') function koaFallbackStatic(root, { fallback = '/', publicPath = '/', ...opts } = {}) { const serveStatic = koaStatic(root, opts) return async (ctx, next) => { ctx.request.url = ctx.request.url.replace(publicPath, '/') if ( /\.html$/.test(ctx.request.url) || !/text\/html/.test(ctx.header.accept) ) { return await serveStatic(ctx, next) } try { await serveStatic(ctx, next) } catch (err) { if (err.status === 404) { ctx.request.url = fallback return await serveStatic(ctx, next) } else { throw err } } } } module.exports = koaFallbackStatic