Use Connect-style Node handlers with Fetch environments such as Bun.serve
and
Deno.serve
.
Use Vite's dev-server middleware with application that uses Bun.serve
.
bun add connect-to-fetch
Pass one or more handlers or middleware to connectToFetch
.
Example with single handler:
import { connectToFetch } from 'connect-to-fetch';
const getResponse = connectToFetch((req, res) => {
res.setHeader('Content-type', 'text/plain');
res.end('Hello world');
});
Bun.serve({
async fetch(request: Request) {
try {
return await getResponse(request);
} catch (e) {
const error = e as Error;
if (error.message === 'UNHANDLED') {
return new Response('Not Found', { status: 404 });
}
console.error(error);
return new Response('Server Error', { status: 500 });
}
},
});
Example with multiple handlers:
import { connectToFetch } from 'connect-to-fetch';
const getResponse = connectToFetch([
(req, res, next) => {
console.log(req.method, req.path);
next();
},
(req, res) => {
res.setHeader('Content-type', 'text/plain');
res.end('Hello world');
},
]);
Adapted from vike-node, MIT License.
Tests use Bun.serve
, so you'll need to have Bun installed to test.