๐ Modules
Enabling Modules
Miniflare supports both the traditional service-worker
and newer modules
formats for writing workers. To use the modules
format, enable it with:
const mf = new Miniflare({ modules: true,});
You can now 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..."); },};
Module Rules
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"] }, ],});
Default Rules
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
:
[[build.upload.rules]]type = "ESModule"globs = ["**/*.mjs"][[build.upload.rules]]type = "CommonJS"globs = ["**/*.js", "**/*.cjs"]