Remotion-Vercel-Sandbox-Bugs behoben

Build-Skripte versprachen Tempo. Lieferten stattdessen Stille und Schneckenpace. So haben zwei winzige Bugs eine schicke Remotion-Vercel-Sandbox in einen Produktionsalptraum verwandelt.

Zwei heimtückische Bugs, die unseren Remotion-Vercel-Sandbox umgebracht haben — theAIcatchup

Key Takeaways

  • Alle Pfade an __dirname andocken – relative Pfade scheitern in Vercel-Umgebungen.
  • Remotion-Bundles kopieren public/-Ordner; vor Sandbox-Upload löschen oder deaktivieren.
  • Fehlerunterdrückung aus Builds raus: Lieber laut scheitern als leise abbauen.

Build-Skripte lügen.

sie flüstern von Geschwindigkeit – vorgebaute Snapshots für Blitz-Renders – und lassen dich in der Produktion im Stich. Nehmt Remotion auf Vercel. Wir – oder genauer: ein paar schlaue Devs – nutzen es, um server-seitig Video-Clips zu spucken. Der Clou? Einmal bundlen beim Deploy, Sandbox snapshoten, bei Bedarf wiederherstellen. Kein Cold-Start-Horror. Aber letzte Woche haben zwei Bugs diesen Traum vergiftet. Stumme Fehlschläge. Langsame Renders. Lauernde OOM-Crashes. Und das tagelang unbemerkt.

Warum haben relative Pfade uns verraten?

Fakt ist: Nodes CWD ist kein Freund. Ein launisches Biest, das sich ständig ändert – vor allem in Vercels Build-Sandbox. Stellt euch vor: Euer Skript ruft addBundleToSandbox mit bundleDir: '.remotion' auf. Süß. Relativ. Läuft lokal, wo ihr der Directory-König seid. CI? Meistens okay. Vercel? Manchmal versagt es. Falscher Ordner. Leerer Upload. Snapshot? Leere Wüste.

Der Bug: Wir haben einen relativen Pfad übergeben: const BUNDLE_DIR = “.remotion”; // … await addBundleToSandbox({ sandbox, bundleDir: BUNDLE_DIR });

Das ist der Übeltäter. Direkt aus dem Post-Mortem. Es “klappt” – keine Errors – aber lädt nichts hoch. Worker stellen nichts wieder her. Zurück auf Los: Voll-Re-Bundle pro Render. Schneeeliiiimaa.

Fix? Eine Zeile Vernunft. An __dirname andocken. ESM-Style:

const __dirname = path.dirname(fileURLToPath(import.meta.url)); const bundleDir = path.resolve(__dirname, ../${BUNDLE_DIR});

Zack. Absoluter Pfad. Unzerstörbar. Lektion aus Nodes Frühzeiten – erinnert ihr euch an die 2012 npm-Pfad-Kriege? Shrinkwrap.json fraß relative Dirs bei lebendigem Leib? Geschichte wiederholt sich, wenn man’s zulässt. Devs stolpern heute noch. Vercels undurchsichtiges CWD? Provokation.

Aber Moment. Fix das, und peng – zweiter Bug.

Schafft Remotion einen simplen Public-Ordner?

Nein. Eigentlich nicht.

Remotions Bundler – netter Kerl – kopiert euren public/-Ordner ins Output. Fonts. Bilder. Assets für Kompositionen. Logisch, oder? Aber Vercels Sandbox-API? Flat-Earth-Fanatiker. addBundleToSandbox erstickt an verschachtelten Pfaden. public/fonts/Inter.woff2? Error. Kein rekursives mkdir. Erwartet Babyschritte: public/ anlegen, dann public/fonts/, dann Datei. Bundler spielt nicht mit.

Zwei Fixes im Umlauf. Option A: publicDir: null in bundle(). Kopie überspringen. Gut, wenn eure Videos keine Statiks brauchen. Option B: Bundlen, dann rm -rf public/. Vor-Upload-Säuberung.

Wir haben beides genommen. Gürtel, Hosenträger, Paranoia.

Wir haben beides gemacht: publicDir: null in bundle() plus defensive rm als Gürtel-und-Hosenträger-Schutz.

Klug. Zukunftssicher. Denn Remotion könnte Defaults morgen umdrehen. Wer weiß? Tooling entwickelt sich schräg.

Mein Hot Take: Remotions Docs verschweigen das. “Flacher Bundle erwartet.” Vergraben? Fehlt? Fühlt sich so an. Echo von Webpacks frühen publicPath-Fallen. Devs verschwenden Stunden mit Reverse-Engineering. Prognose: Wenn Remotion keine rekursiven Uploads patched oder fett warnt, knallt jeder Vercel-Video-Shop dagegen. Euer Netflix-Klon? Verdammt zum Debug-Fegefeuer.

Fehlerunterdrückung: Der stille Mörder

Schlimmstes? Bugs haben geschrien – leise.

Package.json hatte diesen Knaller:

“vercel-build”: “next build && node scripts/create-snapshot.mjs || echo ‘[create-snapshot] Skipped (non-fatal)’”

Praktisch für Staging. Token fehlt? Kein Ding. Aber Prod? Ewiger Degradiert-Modus. Builds grün. Worker hinken. Renders kriechen. Tage vergehen. Keiner guckt hin.

Fix: Rausreißen.

“vercel-build”: “next build && node scripts/create-snapshot.mjs”

Laut scheitern. Deploy stirbt. Problem kommt hoch. Jetzt offensichtlich, aber – na ja – im Nachhinein ist man immer klüger.

Das? Reine Hybris. “Non-fatal” fein. Erinnert an AWS Lambdas frühe Error-Verschlucker. Teams rannten “erfolgreiche” Functions, die ewig timeten. Kostete sie Vermögen. Vercel-Ära, gleiche Falle. Staging-Hacks sickern

Priya Sundaram
Written by

Hardware and infrastructure reporter. Tracks GPU wars, chip design, and the compute economy.

Worth sharing?

Get the best AI stories of the week in your inbox — no noise, no spam.

Originally reported by dev.to