Mount other Koa applications or middleware to a given pathname
JavaScript
553
80 commits
updated Sep 22, 2026
Mount other Koa applications as middleware. The path passed to mount() is stripped
from the URL temporarily until the stack unwinds. This is useful for creating entire
apps or middleware that will function correctly regardless of which path segment(s)
they should operate on.
$ npm install koa-mount
View the ./examples directory for working examples.
Entire applications mounted at specific paths. For example you could mount a blog application at "/blog", with a router that matches paths such as "GET /", "GET /posts", and will behave properly for "GET /blog/posts" etc when mounted.
const mount = require('koa-mount');
const Koa = require('koa');
// hello
const a = new Koa();
a.use(async function (ctx, next) {
await next();
ctx.body = 'Hello';
});
// world
const b = new Koa();
b.use(async function (ctx, next) {
await next();
ctx.body = 'World';
});
// app
const app = new Koa();
app.use(mount('/hello', a));
app.use(mount('/world', b));
app.listen(3000);
console.log('listening on port 3000');
Try the following requests:
$ GET /
Not Found
$ GET /hello
Hello
$ GET /world
World
Mount middleware at specific paths, allowing them to operate independently of the prefix, as they're not aware of it.
const mount = require('koa-mount');
const Koa = require('koa');
async function hello(ctx, next) {
await next();
ctx.body = 'Hello';
}
async function world(ctx, next) {
await next();
ctx.body = 'World';
}
const app = new Koa();
app.use(mount('/hello', hello));
app.use(mount('/world', world));
app.listen(3000);
console.log('listening on port 3000');
The path argument is optional, defaulting to "/":
app.use(mount(a));
app.use(mount(b));
Use the NODE_DEBUG environment variable to whitelist koa-mount debug output:
$ NODE_DEBUG=koa-mount node myapp.js &
$ GET /foo/bar/baz
koa-mount enter /foo/bar/baz -> /bar/baz +2s
koa-mount enter /bar/baz -> /baz +0ms
koa-mount enter /baz -> / +0ms
koa-mount leave /baz -> / +1ms
koa-mount leave /bar/baz -> /baz +0ms
koa-mount leave /foo/bar/baz -> /bar/baz +0ms
MIT
Overall
Maintained
Code review
npm
Latest release
Releases this year
24 followers · starred Feb 2016
277 followers · starred May 2016
Mount other Koa applications or middleware to a given pathname
JavaScript
553
80 commits
updated Sep 22, 2026
Mount other Koa applications as middleware. The path passed to mount() is stripped
from the URL temporarily until the stack unwinds. This is useful for creating entire
apps or middleware that will function correctly regardless of which path segment(s)
they should operate on.
$ npm install koa-mount
View the ./examples directory for working examples.
Entire applications mounted at specific paths. For example you could mount a blog application at "/blog", with a router that matches paths such as "GET /", "GET /posts", and will behave properly for "GET /blog/posts" etc when mounted.
const mount = require('koa-mount');
const Koa = require('koa');
// hello
const a = new Koa();
a.use(async function (ctx, next) {
await next();
ctx.body = 'Hello';
});
// world
const b = new Koa();
b.use(async function (ctx, next) {
await next();
ctx.body = 'World';
});
// app
const app = new Koa();
app.use(mount('/hello', a));
app.use(mount('/world', b));
app.listen(3000);
console.log('listening on port 3000');
Try the following requests:
$ GET /
Not Found
$ GET /hello
Hello
$ GET /world
World
Mount middleware at specific paths, allowing them to operate independently of the prefix, as they're not aware of it.
const mount = require('koa-mount');
const Koa = require('koa');
async function hello(ctx, next) {
await next();
ctx.body = 'Hello';
}
async function world(ctx, next) {
await next();
ctx.body = 'World';
}
const app = new Koa();
app.use(mount('/hello', hello));
app.use(mount('/world', world));
app.listen(3000);
console.log('listening on port 3000');
The path argument is optional, defaulting to "/":
app.use(mount(a));
app.use(mount(b));
Use the NODE_DEBUG environment variable to whitelist koa-mount debug output:
$ NODE_DEBUG=koa-mount node myapp.js &
$ GET /foo/bar/baz
koa-mount enter /foo/bar/baz -> /bar/baz +2s
koa-mount enter /bar/baz -> /baz +0ms
koa-mount enter /baz -> / +0ms
koa-mount leave /baz -> / +1ms
koa-mount leave /bar/baz -> /baz +0ms
koa-mount leave /foo/bar/baz -> /bar/baz +0ms
MIT
Overall
Maintained
Code review
npm
Latest release
Releases this year
24 followers · starred Feb 2016
277 followers · starred May 2016