remotion-dev/remotion · critical

The bundler completed without emitting

Error message

The bundler completed without emitting ${NoReactInternals.bundleName}.

What it means

After webpack finishes bundling, bundle.ts verifies that the expected bundle file (bundle.js per NoReactInternals.bundleName) exists in the output directory. If the bundler reports success but the file is absent, something is deeply wrong with the build output (wrong outDir, output config, or a silent bundler failure). This is a post-build invariant check.

Solutions

  1. Check webpackOverride for changes to output.path/filename and remove conflicting overrides.
  2. Inspect the outDir contents and webpack stats for silent failures or errors.
  3. Ensure sufficient disk space and that no external process deletes dist/ during bundling.
  4. Verify the Remotion version matches the bundler config expectations.

Example fix

// before
Config.overrideWebpackConfig((c) => ({...c, output: {...c.output, path: 'custom-dist'}}))
// after
Config.overrideWebpackConfig((c) => ({...c})) // leave output path to Remotion
Defensive patterns

Strategy: try-catch

Validate before calling

// after bundling, check output yourself
const out = path.join(outDir, 'bundle.js');
if (!fs.existsSync(out)) inspectWebpackStats();

Try / catch

try {
  await bundle(...);
} catch (e) {
  if (String(e).includes('without emitting')) {
    // inspect webpackOverride, disk space, outDir contents
  }
}

Prevention

When it happens

Trigger: webpack compilation succeeded but wrote output to a different directory than outDir (custom webpackOverride/output config); antivirus/cleanup removed the file; disk full; custom build overriding filename.

Common situations: Custom webpackOverride changing output.path or filename; plugins that clean the output dir mid-build; running in restricted CI environments; remotion bundle with heavily customized config.

Understand the failure class

Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.

Related errors


AI-assisted analysis of remotion-dev/remotion@46a3a6bf13 (2026-09-18). Data as JSON: /api/errors/33e6d5263e6c751d. Report an issue: GitHub.

Appendix: source

Thrown at packages/bundler/src/bundle.ts:372

		try {
			await runWebpack();
		} catch (err) {
			if (looksLikeCacheCorruption(err) && actualArgs.enableCaching !== false) {
				// eslint-disable-next-line no-console
				console.warn(
					'Webpack cache appears to be corrupted. Clearing cache and retrying...',
				);
				await clearCache(resolvedRemotionRoot, 'production');
				await runWebpack();
			} else {
				throw err;
			}
		}
	}

	const bundleOutput = path.join(outDir, NoReactInternals.bundleName);
	if (!fs.existsSync(bundleOutput)) {
		throw new Error(
			`The bundler completed without emitting ${NoReactInternals.bundleName}.`,
		);
	}

	const publicPath = getBundlePublicPath(actualArgs.publicPath);
	const staticHash = getBundleStaticHash(publicPath);

	const from = options?.publicDir
		? path.resolve(resolvedRemotionRoot, options.publicDir)
		: path.join(resolvedRemotionRoot, 'public');
	const to = path.join(outDir, 'public');

	let symlinkWarningShown = false;
	const showSymlinkWarning = (ent: fs.Dirent, src: string) => {
		if (symlinkWarningShown) {
			return;
		}

View on GitHub (pinned to 46a3a6bf13)