remotion-dev/remotion · error · TypeError

parameter 'diskSizeInMb' must be finite, but is

Error message

parameter 'diskSizeInMb' must be finite, but is ${diskSizeInMb}

What it means

Third guard in validateDiskSizeInMb: the number must be finite. Infinity/-Infinity pass the typeof and NaN checks but are not valid disk sizes, so Number.isFinite() catches them. The message interpolates the offending value.

Solutions

  1. Clamp the computed value with Math.min/Math.max against the valid range before calling.
  2. Reject or default non-finite inputs in your config layer.
  3. Check Number.isFinite() upstream before validation.

Example fix

// before
const disk = totalSpace / freeRatio; // Infinity when freeRatio === 0
validateDiskSizeInMb(disk);

// after
const disk = Number.isFinite(totalSpace / freeRatio)
  ? totalSpace / freeRatio
  : 2048;
validateDiskSizeInMb(disk);
Defensive patterns

Strategy: validation

Validate before calling

if (!Number.isFinite(diskSizeInMb)) {
  throw new TypeError(`diskSizeInMb must be finite, got ${diskSizeInMb}`);
}
validateDiskSizeInMb(diskSizeInMb);

Type guard

const isFiniteNumber = (v: unknown): v is number =>
  typeof v === 'number' && Number.isFinite(v);

Prevention

When it happens

Trigger: Calling validateDiskSizeInMb with Infinity or -Infinity, e.g., from division by zero, Number('Infinity'), or unbounded arithmetic in a config builder.

Common situations: Computing disk size from a ratio that divides by zero; reading the literal 'Infinity' from config and coercing; bounds-math bugs producing Infinity.

Related errors


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

Appendix: source

Thrown at packages/lambda-client/src/validate-disk-size-in-mb.ts:18

import {
	MAX_EPHEMERAL_STORAGE_IN_MB,
	MIN_EPHEMERAL_STORAGE_IN_MB,
} from './constants';

export const validateDiskSizeInMb = (diskSizeInMb: unknown) => {
	if (typeof diskSizeInMb !== 'number') {
		throw new TypeError(
			`parameter 'diskSizeInMb' must be a number, got a ${typeof diskSizeInMb}`,
		);
	}

	if (Number.isNaN(diskSizeInMb)) {
		throw new TypeError(`parameter 'diskSizeInMb' must not be NaN, but is`);
	}

	if (!Number.isFinite(diskSizeInMb)) {
		throw new TypeError(
			`parameter 'diskSizeInMb' must be finite, but is ${diskSizeInMb}`,
		);
	}

	if (
		diskSizeInMb < MIN_EPHEMERAL_STORAGE_IN_MB ||
		diskSizeInMb > MAX_EPHEMERAL_STORAGE_IN_MB
	) {
		throw new TypeError(
			`parameter 'diskSizeInMb' must be between ${MIN_EPHEMERAL_STORAGE_IN_MB} and ${MAX_EPHEMERAL_STORAGE_IN_MB}, but got ${diskSizeInMb}`,
		);
	}

	if (diskSizeInMb % 1 !== 0) {
		throw new TypeError(
			`parameter 'diskSizeInMb' must be an integer but got ${diskSizeInMb}`,
		);
	}

View on GitHub (pinned to 78fe4bb3fd)