๐ Durable Objects
Specify Durable Objects to add to your environment as follows:
const mf = new Miniflare({  modules: true,  script: `  export class Object1 {    async fetch(request) {      ...    }  }  export default {    fetch(request) {      ...    }  }  `,  durableObjects: {    // Note Object1 is exported from main (string) script    OBJECT1: "Object1",  },});By default, Durable Object data is stored in memory. It will persist between
reloads, but not different Miniflare instances. To enable persistence to the
file system, specify the Durable Object persistence option:
const mf = new Miniflare({  durableObjectsPersist: true, // Defaults to ./.mf/do  durableObjectsPersist: "./data", // Custom path});For testing, it can be useful to make requests to your Durable Objects from
outside a worker. You can do this with the getDurableObjectNamespace method.
import { Miniflare } from "miniflare";
const mf = new Miniflare({  modules: true,  durableObjects: { TEST_OBJECT: "TestObject" },  script: `  export class TestObject {    constructor(state) {      this.storage = state.storage;    }
    async fetch(request) {      const url = new URL(request.url);      if (url.pathname === "/put") await this.storage.put("key", 1);      return new Response((await this.storage.get("key")).toString());    }  }
  export default {    async fetch(request, env) {      const stub = env.TEST_OBJECT.getByName("test");      return stub.fetch(request);    }  }  `,});
const ns = await mf.getDurableObjectNamespace("TEST_OBJECT");const stub = ns.getByName("test");const doRes = await stub.fetch("http://localhost:8787/put");console.log(await doRes.text()); // "1"
const res = await mf.dispatchFetch("http://localhost:8787/");console.log(await res.text()); // "1"Miniflare supports the script_name option for accessing Durable Objects
exported by other scripts. This requires mounting the other worker as described
in ๐ Multiple Workers.
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