Skip to content

Commit 4ee4ba3

Browse files
authored
check wrangler >= 4.59.2 to build Next 16.1+ (#1069)
1 parent b883de7 commit 4ee4ba3

5 files changed

Lines changed: 123 additions & 119 deletions

File tree

.changeset/young-regions-strive.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"@opennextjs/cloudflare": patch
3+
---
4+
5+
Check that wrangler is >= 4.59.2 when building Next 16.1+.
6+
7+
To ensure `workerd` has a required fix to `setImmediate`

packages/cloudflare/src/cli/build/build.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export async function build(
4242
buildHelper.checkRunningInsideNextjsApp(options);
4343
logger.info(`App directory: ${options.appPath}`);
4444
buildHelper.printNextjsVersion(options);
45-
ensureNextjsVersionSupported(options);
45+
await ensureNextjsVersionSupported(options);
4646
const { aws, cloudflare } = getVersion();
4747
logger.info(`@opennextjs/cloudflare version: ${cloudflare}`);
4848
logger.info(`@opennextjs/aws version: ${aws}`);
@@ -96,12 +96,27 @@ export async function build(
9696
logger.info("OpenNext build complete.");
9797
}
9898

99-
function ensureNextjsVersionSupported(options: buildHelper.BuildOptions) {
100-
if (buildHelper.compareSemver(options.nextVersion, "<", "14.2.0")) {
99+
async function ensureNextjsVersionSupported({ nextVersion }: buildHelper.BuildOptions) {
100+
if (buildHelper.compareSemver(nextVersion, "<", "14.2.0")) {
101101
logger.error("Next.js version unsupported, please upgrade to version 14.2 or greater.");
102102
process.exit(1);
103103
}
104-
if (buildHelper.compareSemver(options.nextVersion, ">=", "16")) {
104+
if (buildHelper.compareSemver(nextVersion, ">=", "16")) {
105105
logger.warn("Next.js 16 is not fully supported yet! Some features may not work as expected.");
106106
}
107+
108+
const {
109+
default: { version: wranglerVersion },
110+
} = await import("wrangler/package.json", { with: { type: "json" } });
111+
112+
// We need a version of workerd that has a fix for setImmediate for Next.js 16.1+
113+
// See:
114+
// - https://github.com/cloudflare/workerd/pull/5869
115+
// - https://github.com/opennextjs/opennextjs-cloudflare/issues/1049
116+
if (
117+
buildHelper.compareSemver(nextVersion, ">=", "16.1.0") &&
118+
buildHelper.compareSemver(wranglerVersion, "<", "4.59.2")
119+
) {
120+
logger.warn(`Next.js 16.1+ requires wrangler 4.59.2 or greater (${wranglerVersion} detected).`);
121+
}
107122
}

packages/cloudflare/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"moduleResolution": "node",
1212
"noImplicitReturns": false,
1313
"noPropertyAccessFromIndexSignature": false,
14+
"resolveJsonModule": true,
1415
"outDir": "./dist",
1516
"target": "ES2022",
1617
"types": ["@cloudflare/workers-types", "@opennextjs/aws/types/global.d.ts"]

0 commit comments

Comments
 (0)