Middleware eller en edge route använder en Node.js-modul som inte finns i edge-runtimen.
Förklaring
Next.js Middleware och routes med export const runtime = 'edge' körs i en edge-runtime baserad på Web APIs, inte Node.js. Edge-runtimen saknar de flesta inbyggda Node.js-moduler: crypto, fs, path, os, buffer, och child_process finns inte tillgängliga.
Fördelen med edge-runtimen är låg latens och global distribution nära slutanvändaren. Nackdelen är att Node.js-specifika bibliotek och moduler inte fungerar. Felet syns vid byggtid och listar vilken modul som saknas.
Vanliga orsaker
Middleware som importerar ett bibliotek som internt använder crypto, fs, eller annan Node.js-modul. export const runtime = 'edge' i en route som använder Node.js-specifik kod.
Lösning
Ta bort edge-runtimen för att köra i Node.js-runtimen i stället:
// Ta bort denna rad för att använda Node.js-runtime
export const runtime = 'edge';Om edge-runtimen krävs, byt till Web API-equivalenter. För kryptografi finns Web Crypto API:
// Node.js crypto — fungerar inte i edge
import crypto from 'crypto';
const hash = crypto.createHash('sha256').update(data).digest('hex');
// Web Crypto API — fungerar i edge och webbläsare
const encoded = new TextEncoder().encode(data);
const hashBuffer = await crypto.subtle.digest('SHA-256', encoded);