-
-
Notifications
You must be signed in to change notification settings - Fork 761
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
server function calls not working on Cloudflare #2633
Comments
Having the same issue - one thing (possibly related) I have noted is that even the samples I checked on the website are broken with the same error, for example https://tanstack.com/router/latest/docs/framework/react/examples/start-basic-react-query) |
i had the same error but in a different use. i was calling a server function on form submit. while everything work locally, i had the same import { createServerFn, json } from "@tanstack/start";
const action = createServerFn("POST", async () => {
// this doesn't work on cloudflare but work locally
// return { msg: 'hello' };
// this works on cloudflare
return json({ msg: 'hello' });
});
// ...
function Page() {
return (
<form
onSubmit={async (event) => {
event.preventDefault();
event.stopPropagation();
await action();
}}
>
{/* ... */}
</form>
)
} no clue if this is related in some way |
after some digging, seems like the issue might come from nitro related issue: nitrojs/nitro#1943 |
I got it working, this is my config import type { App } from "vinxi";
import { defineConfig } from "@tanstack/start/config";
const tanstackApp = defineConfig({
server: {
preset: "cloudflare-pages",
rollupConfig: {
external: ["node:async_hooks"],
},
},
});
const routers = tanstackApp.config.routers.map((r) => {
return {
...r,
middleware: r.target === "server" ? "./app/middleware.tsx" : undefined,
};
});
const app: App = {
...tanstackApp,
config: {
...tanstackApp.config,
routers: routers,
},
};
export default app; |
The |
Yes you need that. Nitro needs async context |
If it is working for everyone we might need to submit a PR to update the deployment doc. |
Just so I'm up to date on this thread, we are waiting on nitrojs/nitro#1943 to be resolved, so that it may be updated in Vinxi, correct? |
Hi, @SeanCassiere. I don't think this will be fixed by Nitro in the near future since no one has had looked at the issue for a year now. For now, we have to set Perhaps we should update the documentation to tell people to enable What are your thoughts? |
@SeanCassiere @Talent30 |
just create PRs for the docs then? |
Hi there, Would you like me to put the |
using the i also stumble upon the same error when using
while we are waiting for nitro to integrate the support on the cloudflare preset, it's possible today to pass manually the unenv preset to fix this issue like so: import { defineConfig } from "@tanstack/start/config";
import tsConfigPaths from "vite-tsconfig-paths";
import { cloudflare } from "unenv";
export default defineConfig({
server: {
preset: "cloudflare-pages",
unenv: cloudflare,
},
vite: {
plugins: [tsConfigPaths()],
},
}); we still need the related issue: solidjs/solid-start#1527 |
@SeanCassiere I've encountered the exact same error with the firebase deployment but i was unable to fix it or find a workaround. Should this issue be reopened? example of my export default defineConfig({
server: {
preset: 'firebase',
firebase: {
serverFunctionName: 'serverBriskfitStatic',
gen: 2,
nodeVersion: '22',
httpsOptions: {
region: 'europe-west3',
maxInstances: 5,
},
},
alias: {
'/fonts': '/public/fonts',
},
esbuild: {
options: {
sourceMap: true,
target: 'es2022',
},
},
},
vite: {
resolve: {
alias: {
'/fonts': '/public/fonts',
},
},
plugins: [
tsConfigPaths({
projects: ['./tsconfig.json'],
}),
// visualizer({ open: process.env.NODE_ENV === "production" }),
],
build: {
minify: true,
rollupOptions: {
treeshake: true,
},
},
},
}); and this is the example of my serverFn: export const setLoginCookie = createServerFn({
method: 'POST',
})
.validator((data: { token: string }) => data)
.handler(({ data }) => {
const event = getEvent();
const { token } = data;
setCookie(event, USER_AUTH_KEY, token, {
httpOnly: true,
sameSite: 'strict',
secure: true,
expires: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000), // 7 days
});
}); |
@josippapez sInce it's for a different deployment target, it'd be best if it has its own separate issue. |
Which project does this relate to?
Start
Describe the bug
Server functions don't work on Cloudflare deployments (via
cloudflare-pages
preset),wrangler dev
, and apparently also on Stackblitz.Your Example Website or App
https://github.com/dotnize/tss-cloudflare-server-fn
Steps to Reproduce the Bug or Issue
or stackblitz: https://stackblitz.com/~/github.com/dotnize/tss-cloudflare-server-fn
pnpm install
pnpm build
pnpm preview
via wranglerThe app doesn't work at all due to a server fn call in
__root.tsx
's beforeLoad. Server fn calls from other routes/loaders (like inindex.tsx
) also don't work.Expected behavior
Server functions should work as expected, as it already works on local vinxi dev, node-server builds, or Vercel deployments
repo deployment on vercel, working as expected:
https://tss-cloudflare-server-fn.vercel.app/
Screenshots or Videos
No response
Platform
Additional context
No response
The text was updated successfully, but these errors were encountered: