Bug del Sandbox Remotion su Vercel Risolti

Gli script di build promettevano velocità. Hanno sfornato silenzio e lentezza. Ecco come due bug minuscoli hanno trasformato un Sandbox Remotion Vercel impeccabile in un incubo produttivo.

Due Bug Insidiosi che Hanno Ucciso il Nostro Sandbox Remotion su Vercel — theAIcatchup

Key Takeaways

  • Lega tutti i percorsi a __dirname — i relativi falliscono negli ambienti Vercel.
  • I bundle Remotion copiano le cartelle public/; elimina o disabilita prima dell'upload sandbox.
  • Togli la soppressione errori nei build: meglio fallire in fretta che degradare in silenzio.

Gli script di build sono bugiardi.

Sussurrano promesse di velocità — snapshot pre-costruiti per rendering fulminei — poi ti mollano in produzione. Prendete Remotion su Vercel. Noi — o meglio, certi developer con i fiocchi — lo usiamo per generare clip video server-side. L’idea geniale? Bundla una volta al deploy, snapshotta il sandbox, ripristina all’occorrenza. Niente cold start infernali. Ma la settimana scorsa, due bug hanno rovinato tutto. Fallimenti muti. Rendering a singhiozzo. Crash OOM in agguato. E nessuno ha fiatato per giorni.

Perché i Percorsi Relativi ci Hanno Tradito?

Attenzione. La CWD di Node non è tua amica. È una bestia volubile, che cambia con il vento — specie nel sandbox build di Vercel. Immaginate: il vostro script chiama addBundleToSandbox con bundleDir: '.remotion'. Carino. Relativo. Funziona in locale, dove comandate voi. CI? Di solito ok. Ma Vercel? A volte slitta. Cartella sbagliata. Upload vuoto. Snapshot? Un deserto.

Il bug: passavamo un percorso relativo: const BUNDLE_DIR = “.remotion”; // … await addBundleToSandbox({ sandbox, bundleDir: BUNDLE_DIR });

Ecco la pistola fumante. Dritta dal post-mortem. “Riesce” — zero errori — ma carica niente. I worker non ripristinano un bel niente. Torni al punto zero: re-bundle completo a ogni render. Leeeento.

La fix? Una riga di buon senso. Lega a __dirname. Stile ESM:

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

Pum. Percorso assoluto. Infrangibile. Lezione imparata dai primordi di Node — vi ricordate le guerre npm sui percorsi nel 2012? Shrinkwrap.json che divorava cartelle relative? La storia si ripete se la lasci fare. I dev di oggi ci cascano ancora. La CWD opaca di Vercel? Chiedetevelo.

Ma aspetta. Rispondi a quello, e zac — secondo bug.

Remotion Sa Gestire una Semplice Cartella Public?

No. Non proprio.

Il bundler di Remotion — tipo premuroso — copia la vostra cartella public/ nell’output. Font. Immagini. Asset per le composizioni. Logico, no? Peccato che l’API sandbox di Vercel? Fanatico della terra piatta. addBundleToSandbox si strozza sui percorsi nidificati. public/fonts/Inter.woff2? Errore. Niente mkdir ricorsivo. Vuole baby-steps: crea public/, poi public/fonts/, poi il file. Il bundler non ci sta.

Due soluzioni sul tavolo. Opzione A: publicDir: null in bundle(). Salta la copia. Ok se i vostri video non bramano asset statici. Opzione B: Bundla, poi rm -rf public/. Pulizia pre-upload.

Hanno scelto entrambe. Cintura, bretelle, paranoia.

Abbiamo fatto entrambe: publicDir: null nel bundle() più la rm difensiva come guardia cintura-e-bretelle.

Intelligente. A prova di futuro. Perché Remotion potrebbe cambiare i default domani. Chissà? I tool evolvono in modo strano.

La mia opinione calda: la doc di Remotion sorvola. “Bundle flat atteso.” Sepolto? Inesistente? Così pare. Ricorda i guai iniziali di Webpack con publicPath. I dev buttano via ore a reverse-engineerare. Previsione: se Remotion non patcha gli upload ricorsivi o avverte forte, ogni shop video su Vercel ci sbatte il muso. Il tuo clone Netflix? Condannato al purgatorio debug.

Soppressione Errori: L’Ammazza-Silenzio

Il peggio? I bug urlavano — piano piano.

Package.json aveva questa chicca:

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

Utilissimo in staging. Token assente? Niente panico. Ma in prod? Degrado eterno. Build verdi. Worker zoppi. Rendering al ralenti. Giorni volano. Nessuno batte ciglio.

Fix: Strappalo via.

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

Fallisci forte. Deploy muore. Il problema salta fuori. Ovvio ora, ma — ehi — il senno di poi è sempre 20/20.

Questo? Pura arroganza. “Non-fatale” un cavolo. Mi ricorda gli errori ingoiati da AWS Lambda ai primi tempi. Team che giravano funzioni “riuscìte” in ti

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