A tiny, accurate, fast Express middleware for single page apps with client side routing.
Works as a middleware for Express. Can be used as either an application middleware or a router middleware.
import fallback from 'express-history-api-fallback'
import express from 'express'
const app = express()
const root = `${__dirname}/public`
app.use(express.static(root))
app.use(fallback('index.html', { root }))
Or in ECMAScript 5:
var fallback = require('express-history-api-fallback')
var express = require('express')
var app = express()
var root = __dirname + '/public'
app.use(express.static(root))
app.use(fallback('index.html', { root: root }))
Returns a middleware for use by Express applications and routers.
Arguments are passed to res.sendFile() in express@>=v4.8.0
, or res.sendfile() otherwise.
Absolute path:
app.use(fallback(__dirname + '/dist/app.html'))
Relative path:
app.use(fallback('dist/app.html', { root: __dirname }))
Location of the HTML file containing single page app entry point.
Unless the root
option is set in the options
object, path
must be an absolute path of the file.
Valid options are maxAge
, root
, lastModified
, headers
, and dotfiles
. See Response.sendFile() for details. Note that only maxAge
and root
are supported with express@<4.8
.
Yes, but this implementation is much better.
index.html
for POST
or other requests.res.sendFile()
in Express >=4.8.0
do the heavy lifting of serving the file.See the blog post "Single Page App Routing with Express & Node.js" for an overview of the problems with alternative middlewares.