From 51767774d138ad69e8baf10c5efdd490aa33789b Mon Sep 17 00:00:00 2001 From: Abdelrahman Awad Date: Sat, 24 Oct 2026 19:28:57 -0400 Subject: [PATCH] fix(v10/nextjs): Create the SDK-anchored require lazily so Cloudflare workers don't crash on import Webpack-built OpenNext workers have an empty `__filename`, so the module-scope `createRequire` in `config/util` threw as soon as the server entry was imported, failing the instrumentation hook on every request. --- packages/nextjs/src/config/util.ts | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/packages/nextjs/src/config/util.ts b/packages/nextjs/src/config/util.ts index 1473b86bd745..9393d0d643ee 100644 --- a/packages/nextjs/src/config/util.ts +++ b/packages/nextjs/src/config/util.ts @@ -25,17 +25,19 @@ export function getNextjsVersion(): string | undefined { return undefined; } -// Anchored at this package so `next` (a peer dependency) still resolves when the process cwd is not -// the Next.js project root, e.g. custom servers or monorepos started from the repo root. -let sdkRequire: NodeJS.Require; -/*! rollup-include-cjs-only */ -sdkRequire = createRequire(__filename); -/*! rollup-include-cjs-only-end */ -/*! rollup-include-esm-only */ -sdkRequire = createRequire(import.meta.url); -/*! rollup-include-esm-only-end */ - function resolveNextjsPackageJson(): string | undefined { + // Anchored at this package so `next` (a peer dependency) still resolves when the process cwd is not + // the Next.js project root, e.g. custom servers or monorepos started from the repo root. + // Not created at module scope: the server entry imports this module, and webpack-built Cloudflare + // workers have an empty `__filename`, so `createRequire` would throw on import. + let sdkRequire: NodeJS.Require; + /*! rollup-include-cjs-only */ + sdkRequire = createRequire(__filename); + /*! rollup-include-cjs-only-end */ + /*! rollup-include-esm-only */ + sdkRequire = createRequire(import.meta.url); + /*! rollup-include-esm-only-end */ + for (const nodeRequire of [createRequire(`${process.cwd()}/`), sdkRequire]) { try { return nodeRequire.resolve('next/package.json');