next-on-pages icon indicating copy to clipboard operation
next-on-pages copied to clipboard

[🐛 Bug]: Dynamic Pages / Routes can't deploy to Cloudflare Pages

Open exepowered opened this issue 10 months ago • 9 comments

next-on-pages environment related information

Relevant Packages: @cloudflare/next-on-pages: 1.11.0 vercel: N/A next: 14.1.4

Description

I'm currently building a website with Next.js 14 and Prismic.io CMS. It seems like there's an issue with Dynamic Pages / Dynamic Routes on Cloudflare Pages deploy.

When deployed to Vercel or running locally, my app works flawlessly.

On Cloudflare Pages deploy, the pages are marked correctly as λ (Dynamic) server-rendered on demand using Node.js, but the deploy fails:

16:22:18.726	⚡️ ERROR: Failed to produce a Cloudflare Pages build from the project.
16:22:18.726	⚡️ 
16:22:18.726	⚡️ 	The following routes were not configured to run with the Edge Runtime:
16:22:18.726	⚡️ 	  - /[manufacturer]/[uid]
16:22:18.727	⚡️ 	  - /kategoria/[uid]
16:22:18.727	⚡️ 	  - /producent/[uid]
16:22:18.727	⚡️ 
16:22:18.727	⚡️ 	Please make sure that all your non-static routes export the following edge runtime route segment config:
16:22:18.727	⚡️ 	  export const runtime = 'edge';
16:22:18.727	⚡️ 
16:22:18.727	⚡️ 	You can read more about the Edge Runtime on the Next.js documentation:
16:22:18.727	⚡️ 	  https://nextjs.org/docs/app/building-your-application/rendering/edge-and-nodejs-runtimes
16:22:18.727	
16:22:18.747	Failed: Error while executing user command. Exited with error code: 1

When I add export const runtime = 'edge' to my failing page.tsx (although it should work under node.js default runtime, and it does so on Vercel), the page deploys succesfully as ℇ (Edge Runtime) server-rendered on demand using the Edge Runtime.

Now trying to access the page, I'm getting this error:

Application error: a server-side exception has occurred (see the server logs for more information).
Digest: 3018982495
image

Reproduction

Run a Next.js 14 (App Router) app with Dynamic Pages, and Prismic.io CMS in my case. Try deploying to Cloudflare Pages. Example code.:

// src/app/[manufacturer]/[uid]/page.tsx

import { Metadata } from "next";
import { notFound } from "next/navigation";
import { SliceZone } from "@prismicio/react";

import { createClient } from "@/prismicio";
import { components } from "@/slices";

type Params = { uid: string };

export default async function Page({ params }: { params: Params }) {
  const client = createClient();
  const page = await client
    .getByUID("product", params.uid)
    .catch(() => notFound());

  return <SliceZone slices={page.data.slices} components={components} />;
}

export async function generateMetadata({ params }: { params: Params; }): Promise<Metadata> {
  const client = createClient();
  const page = await client
    .getByUID("product", params.uid)
    .catch(() => notFound());

  return {
    title: page.data.meta_title,
    description: page.data.meta_description,
    openGraph: {
      images: [page.data.meta_image?.url || ''],
    },
  };
}

Pages Deployment Method

Pages CI (GitHub/GitLab integration)

Pages Deployment ID

0a8c872 and 114366d

Additional Information

Found a similar issue here, but unable to fix: #32 and #35

Would you like to help?

  • [X] Would you like to help fixing this bug?

exepowered avatar Apr 17 '24 20:04 exepowered

Facing the same issue here. image

It seems that the problem is related to importing client components in the page.jsx file.

ghost avatar May 02 '24 13:05 ghost

same , the dynamic routes with export const runtime = "edge" gives server side error in cloudflare pages

diptnc avatar May 11 '24 09:05 diptnc

facing the same issue, any solution?

beyourahi avatar Jun 02 '24 07:06 beyourahi

Personally, I switched back to Vercel, at least for now. They support Next.js natively, and apply some nice features e.g. image optimization that Cloudflare Pages doesn't support.

exepowered avatar Jun 02 '24 16:06 exepowered

image

Source: https://developers.cloudflare.com/pages/framework-guides/nextjs/deploy-a-nextjs-site/#generatestaticparams

This is straight out of the docs but it doesn't work for me.

beyourahi avatar Jun 03 '24 17:06 beyourahi

For me, it was working one month ago thanks to dynamicParams = false; and using generateStaticParams but using the same code today gives me this same error: The following routes were not configured to run with the Edge Runtime. It feels like next-on-pages is highly unstable with NextJS and everytime I want to publish my project, I have to fix new issues rising from nowhere.

valentinbdv avatar Jul 27 '24 09:07 valentinbdv

After digging, it seems the issue I have is currently being fixed: https://github.com/cloudflare/next-on-pages/issues/833

valentinbdv avatar Jul 27 '24 09:07 valentinbdv

image

Source: https://developers.cloudflare.com/pages/framework-guides/nextjs/deploy-a-nextjs-site/#generatestaticparams

This is straight out of the docs but it doesn't work for me.

Hm. Will this ever be compatible with next on pages? You really gotta jump through a lot of hoops to get something similar on CF.

Anonymous327 avatar Jul 30 '24 08:07 Anonymous327

facing the same issue, any solution? I using the latest (1.13.2) version of next-on-pages.

But :(

⚡️ ERROR: Failed to produce a Cloudflare Pages build from the project.
⚡️ 
⚡️      The following routes were not configured to run with the Edge Runtime:
⚡️        - /api/v1/ssg/[slug]
⚡️ 
⚡️      Please make sure that all your non-static routes export the following edge runtime route segment config:
⚡️        export const runtime = 'edge';
⚡️ 
⚡️      You can read more about the Edge Runtime on the Next.js documentation:
⚡️        https://nextjs.org/docs/app/building-your-application/rendering/edge-and-nodejs-runtimes

kazzyfrog avatar Sep 07 '24 16:09 kazzyfrog

facing the same issue, any solution? I using the latest (1.13.2) version of next-on-pages.

Seen this? Solved my issue.

mrtnrs avatar Oct 10 '24 22:10 mrtnrs

i was facing the same issue but putting this line solved my error in the dynamic route file /blogs/[slug] export const runtime = "edge";

rajaasim4 avatar Jan 11 '25 10:01 rajaasim4