diff --git a/.changeset/mean-beers-search.md b/.changeset/mean-beers-search.md new file mode 100644 index 000000000000..cdebc46cc083 --- /dev/null +++ b/.changeset/mean-beers-search.md @@ -0,0 +1,5 @@ +--- +"wrangler": patch +--- + +fix: nodejs_compat flags no longer error when running wrangler types --x-include-runtime diff --git a/packages/wrangler/e2e/types.test.ts b/packages/wrangler/e2e/types.test.ts index 9437312f229b..f536e5e2058d 100644 --- a/packages/wrangler/e2e/types.test.ts +++ b/packages/wrangler/e2e/types.test.ts @@ -130,4 +130,24 @@ describe("types", () => { `📣 It looks like you have some Node.js compatibility turned on in your project. You might want to consider adding Node.js typings with "npm i --save-dev @types/node@20.8.3". Please see the docs for more details: https://developers.cloudflare.com/workers/languages/typescript/#transitive-loading-of-typesnode-overrides-cloudflareworkers-types` ); }); + + it("should not error with nodejs_compat flags", async () => { + const helper = new WranglerE2ETestHelper(); + await helper.seed({ + ...seed, + "wrangler.toml": dedent` + name = "test-worker" + main = "src/index.ts" + compatibility_date = "2023-01-01" + compatibility_flags = ["nodejs_compat", "experimental:nodejs_compat_v2"] + `, + }); + + const output = await helper.run( + `wrangler types --x-include-runtime="./types.d.ts"` + ); + + expect(output.stderr).toBe(""); + expect(output.status).toBe(0); + }); }); diff --git a/packages/wrangler/src/type-generation/runtime/index.ts b/packages/wrangler/src/type-generation/runtime/index.ts index 8e4ecffa35fa..1d2c275ffad8 100644 --- a/packages/wrangler/src/type-generation/runtime/index.ts +++ b/packages/wrangler/src/type-generation/runtime/index.ts @@ -49,7 +49,10 @@ export async function generateRuntimeTypes({ const types = await generate({ compatibilityDate: compatibility_date, - compatibilityFlags: compatibility_flags, + // Ignore nodejs compat flags as there is currently no mechanism to generate these dynamically. + compatibilityFlags: compatibility_flags.filter( + (flag) => !flag.includes("nodejs_compat") + ), }); await writeFile(outFile, types, "utf8");