๐ 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"] },];Was this helpful?
- Resources
 - API
 - New to Cloudflare?
 - Directory
 - Sponsorships
 - Open Source
 
- Support
 - Help Center
 - System Status
 - Compliance
 - GDPR
 
- Company
 - cloudflare.com
 - Our team
 - Careers
 
- ยฉ 2025 Cloudflare, Inc.
 - Privacy Policy
 - Terms of Use
 - Report Security Issues
 - Trademark