@d1testflare/http-server
v2.9.0
Published
HTTP server module for Miniflare: a fun, full-featured, fully-local simulator for Cloudflare Workers
Downloads
77
Maintainers
Readme
@d1testflare/http-server
HTTP server module for Miniflare: a fun, full-featured, fully-local simulator for Cloudflare Workers. See 🧰 Using the API for more details.
Example
import { CorePlugin, MiniflareCore } from "@d1testflare/core";
import {
HTTPPlugin,
convertNodeRequest,
createServer,
startServer,
} from "@d1testflare/http-server";
import { VMScriptRunner } from "@d1testflare/runner-vm";
import { Log, LogLevel } from "@d1testflare/shared";
import { MemoryStorage } from "@d1testflare/storage-memory";
import http from "http";
// Converting Node.js http.IncomingMessage to Miniflare's Request
http.createServer(async (nodeReq, nodeRes) => {
const req = await convertNodeRequest(nodeReq, "http://upstream", {
forwardedProto: "http",
realIp: "127.0.0.1",
cf: { colo: "SFO" },
});
nodeRes.end(await req.text());
});
// Creating and starting HTTP servers
export class BadStorageFactory {
storage() {
throw new Error("This example shouldn't need storage!");
}
}
const plugins = { CorePlugin, HTTPPlugin };
const ctx = {
log: new Log(LogLevel.INFO),
storageFactory: new BadStorageFactory(),
scriptRunner: new VMScriptRunner(),
};
const mf = new MiniflareCore(plugins, ctx, {
modules: true,
script: `export default {
async fetch(request, env) {
return new Response("body");
}
}`,
port: 5000,
});
// Start the server yourself...
const server = await createServer(mf);
// ...or get Miniflare to start it for you, logging the port
const server2 = await startServer(mf);