cloudflare / cloudflare/workers-sdk

🐛 BUG: `wrangler types` + DurableObjects + a build process + typescript

Open
#6,905 5 comments 0 reactions 3 assignees Claimed by @MattieTK View on GitHub
feature:types
Dominant language
TypeScript
Stars
4.5k
Forks
1.5k
Avg merge
3d 8h
Merged PRs (30d)
186

Description

### Which Cloudflare product(s) does this pertain to?

Wrangler

### What version(s) of the tool(s) are you using?

3.80.0 [wrangler]

### What version of Node are you using?

20

### What operating system and version are you using?

Mac Sequoia

### Describe the Bug

I have a remix app using wrangler+static assets, and am also using a DurableObject. I have the DurableObject defined in my `wrangler.toml`, and then run `wrangler types` to generate `worker-configuration.d.ts`. That ends up looking something like this:

```
interface Env {
DO: DurableObjectNamespace;
}
```

That's great, except, `Env["DO"]` actually is typed as `DurableObjectNamespace` because `import("./build/index")` is reading from my built javascript file and has no types. If I manually change that to `import("./server.ts").DrizzleTestDO` then typing works fine, but the change would be erased the next time I run `wrangler types`.

### Expected behavior
I'm not sure what the right thing to do here is. As a workaround, I am running `wrangler types --env-namespace EnvBeforeFixup`, and then in my `env.d.ts` overriding with the appropriate type:

```
interface Env extends EnvBeforeFixup {
DO: DurableObjectNamespace;
}
```

This lets me have the correct type and not worry about overwriting it when I run `npm run typegen` in the future.

Example repo here: https://github.com/zwily/test-drizzle-durable-objects

### Steps to reproduce
Please provide the following:
- A minimal working subset of your worker code
- A minimal working subset of your `wrangler.toml`
- Commands used to start your local dev server, including custom env and cli args
- Steps to be performed in the browser, curl commands, or a test we can run that reliably fails (at least a percent of the time)

A git repo we can clone and run a test suite on, or which has a README with step-by-step instructions, is even better. In this case, please use the field below to provide a link to the minimal repro.

### Please provide a link to a minimal reproduction

https://github.com/zwily/test-drizzle-durable-objects

### Please provide any relevant error logs

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.