Skip to content

Crash when using @cloudflare/vite-plugin + Cloudflare D1 and hot reloading #1975

@nihalgonsalves

Description

@nihalgonsalves

Reproduction:

This works in general, but as soon as you trigger a hot reload by saving somewhere, you get this in the server logs:

9:25:54 AM [vite] (rsc) hmr update /@id/virtual:cloudflare/worker-entry, /src/styles.css
Warning: A promise was resolved or rejected from a different request context than the one it was created in. However, the creating request has already been completed or canceled. Continuations for that request are unlikely to run safely and have been canceled. If this behavior breaks your worker, consider setting the `no_handle_cross_request_promise_resolution` compatibility flag for your worker.
    at CustomModuleRunner.import (workers/runner-worker.js:1045:10)
Warning: A promise was resolved or rejected from a different request context than the one it was created in. However, the creating request has already been completed or canceled. Continuations for that request are unlikely to run safely and have been canceled. If this behavior breaks your worker, consider setting the `no_handle_cross_request_promise_resolution` compatibility flag for your worker.
    at CustomModuleRunner.import (workers/runner-worker.js:1045:10)

After a moment, the browser tab will also crash with this message:

Error: The Workers runtime canceled this request because it detected that your Worker's code had hung and would never generate a response. Refer to: https://developers.cloudflare.com/workers/observability/errors/
    at async Object.fetch (file:///< repository>/node_modules/.pnpm/miniflare@4.20260305.0/node_modules/miniflare/dist/src/workers/core/entry.worker.js:4497:22)

If you add the no_handle_cross_request_promise_resolution flag as the first error says, you'll get this error instead:

[vite] hot updated: virtual:cloudflare/worker-entry
[SSR Error]
    at fn (<repository>/node_modules/.vite/deps_ssr/react-server-dom-webpack_client__edge.js?v=37af8570:2405:20)
    at fn (<repository>/node_modules/.vite/deps_ssr/react-server-dom-webpack_client__edge.js?v=37af8570:2405:20)
 Error: Cannot perform I/O on behalf of a different request. I/O objects (such as streams, request/response bodies, and others) created in the context of one request handler cannot be accessed from a different request's handler. This is a limitation of Cloudflare Workers which allows us to improve overall performance. (I/O type: SpanParent)
    at RpcProperty.<anonymous> (<anonymous>)
    at CustomModuleRunner.cachedModule (workers/runner-worker.js:1196:76)
    at request (workers/runner-worker.js:1123:94)
    at dynamicRequest (workers/runner-worker.js:1125:122)
    at Object.load (<repository>/node_modules/.pnpm/@vitejs+plugin-rsc@0.5.21_react-dom@19.2.4_react@19.2.4__react-server-dom-webpack@19.2._336fd4df9d8e62120fabaccf47fa08cf/node_modules/@vitejs/plugin-rsc/dist/ssr.js:22:10)
    at <repository>/node_modules/.pnpm/@vitejs+plugin-rsc@0.5.21_react-dom@19.2.4_react@19.2.4__react-server-dom-webpack@19.2._336fd4df9d8e62120fabaccf47fa08cf/node_modules/@vitejs/plugin-rsc/dist/core/ssr.js:10:18
    at <repository>/node_modules/.pnpm/@vitejs+plugin-rsc@0.5.21_react-dom@19.2.4_react@19.2.4__react-server-dom-webpack@19.2._336fd4df9d8e62120fabaccf47fa08cf/node_modules/@vitejs/plugin-rsc/dist/dist-yW9-EeG1.js:34:22
    at globalThis.__vite_rsc_require__ (<repository>/node_modules/.pnpm/@vitejs+plugin-rsc@0.5.21_react-dom@19.2.4_react@19.2.4__react-server-dom-webpack@19.2._336fd4df9d8e62120fabaccf47fa08cf/node_modules/@vitejs/plugin-rsc/dist/shared-Dhw3vs8e.js:16:21)
    at requireAsyncModule (<repository>/node_modules/.vite/deps_ssr/react-server-dom-webpack_client__edge.js:53:23)
    at preloadModule (<repository>/node_modules/.vite/deps_ssr/react-server-dom-webpack_client__edge.js:83:64)
[vite] program reload

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions