๐ Modules
Miniflare supports both the traditional service-worker
and the newer modules
formats for writing workers. To use the modules
format, enable it with:
const mf = new Miniflare({ modules: true,});
You can then use modules
worker scripts like the following:
export default { async fetch(request, env, ctx) { // - `request` is the incoming `Request` instance // - `env` contains bindings, KV namespaces, Durable Objects, etc // - `ctx` contains `waitUntil` and `passThroughOnException` methods return new Response("Hello Miniflare!"); }, async scheduled(controller, env, ctx) { // - `controller` contains `scheduledTime` and `cron` properties // - `env` contains bindings, KV namespaces, Durable Objects, etc // - `ctx` contains the `waitUntil` method console.log("Doing something scheduled..."); },};
Miniflare supports all module types: ESModule
, CommonJS
, Text
, Data
and
CompiledWasm
. You can specify additional module resolution rules as follows:
const mf = new Miniflare({ modulesRules: [ { type: "ESModule", include: ["**/*.js"], fallthrough: true }, { type: "Text", include: ["**/*.txt"] }, ],});
The following rules are automatically added to the end of your modules rules
list. You can override them by specifying rules matching the same globs
:
[ { type: "ESModule", include: ["**/*.mjs"] }, { type: "CommonJS", include: ["**/*.js", "**/*.cjs"] },];