diff --git a/.changeset/moody-suns-chew.md b/.changeset/moody-suns-chew.md new file mode 100644 index 000000000000..ec0576218e19 --- /dev/null +++ b/.changeset/moody-suns-chew.md @@ -0,0 +1,5 @@ +--- +"wrangler": patch +--- + +Add warning about the browser rendering not available on local diff --git a/packages/wrangler/src/__tests__/dev.test.ts b/packages/wrangler/src/__tests__/dev.test.ts index a3d063658acb..b53e14a1f226 100644 --- a/packages/wrangler/src/__tests__/dev.test.ts +++ b/packages/wrangler/src/__tests__/dev.test.ts @@ -1879,6 +1879,23 @@ describe.sequential("wrangler dev", () => { }); }); + describe("`browser rendering binding", () => { + it("should show error when running locally", async () => { + writeWranglerConfig({ + browser: { + binding: "MYBROWSER", + }, + }); + fs.writeFileSync("index.js", `export default {};`); + + await expect( + runWrangler("dev index.js") + ).rejects.toThrowErrorMatchingInlineSnapshot( + "[Error: Browser Rendering is not supported locally. Please use `wrangler dev --remote` instead.]" + ); + }); + }); + it("should error helpfully if pages_build_output_dir is set", async () => { writeWranglerConfig({ pages_build_output_dir: "dist", name: "test" }); await expect(runWrangler("dev")).rejects.toThrowErrorMatchingInlineSnapshot( diff --git a/packages/wrangler/src/api/startDevWorker/ConfigController.ts b/packages/wrangler/src/api/startDevWorker/ConfigController.ts index 2b085db269e2..eae79d2fa377 100644 --- a/packages/wrangler/src/api/startDevWorker/ConfigController.ts +++ b/packages/wrangler/src/api/startDevWorker/ConfigController.ts @@ -315,6 +315,21 @@ async function resolveConfig( ); } + if (resolved.assets && resolved.dev.remote) { + throw new UserError( + "Cannot use assets in remote mode. Workers with assets are only supported in local mode. Please use `wrangler dev`." + ); + } + + if ( + extractBindingsOfType("browser", resolved.bindings).length && + !resolved.dev.remote + ) { + throw new UserError( + "Browser Rendering is not supported locally. Please use `wrangler dev --remote` instead." + ); + } + validateAssetsArgsAndConfig(resolved); const services = extractBindingsOfType("service", resolved.bindings);