remotion-dev/remotion · error · Error

No output files found in the config file.

Error message

No output files found in the config file.

What it means

Thrown by prepareConfigFile when esbuild completed with zero errors but produced no outputFiles. This is an internal invariant failure: a successful build with write:false should always emit at least one output artifact.

Source

Thrown at packages/cli/src/load-config.ts:49

		entryPoints: [resolved],
		tsconfig: isJavascript ? undefined : tsconfigJson,
		absWorkingDir: remotionRoot,
		outfile: virtualOutfile,
		write: false,
		packages: 'external',
	});
	if (result.errors.length > 0) {
		throw new Error(
			`Error in remotion.config.ts file: ${result.errors
				.map((error) => error.text)
				.join('\n')}`,
		);
	}

	const firstOutfile = result.outputFiles[0];

	if (!firstOutfile) {
		throw new Error('No output files found in the config file.');
	}

	const code = new TextDecoder().decode(firstOutfile.contents);
	return {code, remotionRoot, resolved};
};

export const executeConfigFile = ({code, remotionRoot}: PreparedConfigFile) => {
	let str = code;

	const currentCwd = process.cwd();

	// The config file is always executed from the Remotion root, if `process.cwd()` is being used. We cannot enforce this in worker threads used for testing
	if (isMainThread) {
		process.chdir(remotionRoot);
	}

	if (process.env.PATCH_BUN_DEVELOPMENT) {
		str = str.replace('@remotion/cli/config', './config');

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Ensure remotion.config.ts has at least one statement (an empty file can produce no output).
  2. Reinstall node_modules to reset esbuild: `rm -rf node_modules && bun install`.
  3. Upgrade @remotion/cli and @remotion/bundler to matching versions (`npx remotion upgrade`).
  4. If it persists, file a Remotion issue with the config file and esbuild version.

Example fix

// before: empty remotion.config.ts
// after: add at least one config statement
import {Config} from '@remotion/cli/config';
Config.setVideoImageFormat('jpeg');
Defensive patterns

Strategy: validation

Validate before calling

import {readFileSync} from 'node:fs';

const ensureNonEmptyConfig = (configPath: string) => {
  const content = readFileSync(configPath, 'utf8').trim();
  if (content.length === 0) {
    throw new Error('remotion.config.ts is empty - add at least one Config statement.');
  }
};

ensureNonEmptyConfig(configPath);

Prevention

When it happens

Trigger: An esbuild configuration that suppresses output (extremely unusual given the fixed options passed); an esbuild version incompatibility; an empty entry file that esbuild trims to nothing under specific flags.

Common situations: Rarely hit in practice; usually indicates a corrupted esbuild install, an outdated @remotion/bundler, or an esbuild downgrade. May also occur if remotion.config.ts is empty and esbuild emits nothing under the configured options.

Related errors


AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12). Data as JSON: /api/errors/c39c28dfcf54dc1f. Report an issue: GitHub.