n8n-io/n8n · error · ExpressionExtensionError

cannot convert to number

Error message

cannot convert to number

What it means

toNumber() ran the strict Number() conversion on the currency-stripped string and got NaN. Unlike toFloat()/toInt(), Number() accepts no trailing garbage, so strings like '12abc' fail here even when parseFloat-based converters would succeed.

Solutions

  1. Ensure the string is a clean numeric literal with no trailing characters
  2. Use toFloat() when the value may contain trailing non-numeric characters
  3. Pre-validate with a numeric regex or isNumeric-style check before calling toNumber()
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at packages/@n8n/expression-runtime/src/extensions/string-extensions.ts:260 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12). Data as JSON: /api/errors/a4ae947c114e5b56. Report an issue: GitHub.

Appendix: source

Thrown at packages/@n8n/expression-runtime/src/extensions/string-extensions.ts:260

function toFloat(value: string) {
	if (value.includes(',')) {
		throw new ExpressionExtensionError('cannot convert to float, expected . as decimal separator');
	}

	const float = parseFloat(value.replace(CURRENCY_REGEXP, ''));

	if (isNaN(float)) {
		throw new ExpressionExtensionError('cannot convert to float');
	}

	return float;
}

function toNumber(value: string) {
	const num = Number(value.replace(CURRENCY_REGEXP, ''));

	if (isNaN(num)) {
		throw new ExpressionExtensionError('cannot convert to number');
	}

	return num;
}

function quote(value: string, extraArgs: string[]) {
	const [quoteChar = '"'] = extraArgs;
	return `${quoteChar}${value
		.replace(/\\/g, '\\\\')
		.replace(new RegExp(`\\${quoteChar}`, 'g'), `\\${quoteChar}`)}${quoteChar}`;
}

function isNumeric(value: string) {
	if (value.includes(' ')) return false;

	return !isNaN(value as unknown as number) && !isNaN(parseFloat(value));
}

View on GitHub (pinned to 5ac6606e81)