n8n-io/n8n · error · NodeTypeNotFoundError

NODE_TYPE_NOT_FOUND

NODE_TYPE_NOT_FOUND

Error message

Node type "${nodeType}" not found

What it means

Factory createNodeTypeNotFoundError wraps a NodeTypeNotFoundError. It signals that a node's type string (e.g. '@n8n/n8n-nodes-base.httpRequest') is not present in the INodeTypeDescription[] registry passed to the builder. The node exists in workflow.nodes but its type is unknown to this environment.

Source

Thrown at packages/@n8n/ai-workflow-builder.ee/src/tools/helpers/validation.ts:112

 * Create a node not found error
 */
export function createNodeNotFoundError(nodeIdentifier: string): ToolError {
	const error = new NodeNotFoundError(nodeIdentifier);
	return {
		message: error.message,
		code: 'NODE_NOT_FOUND',
		details: { nodeIdentifier },
	};
}

/**
 * Create a node type not found error
 */
export function createNodeTypeNotFoundError(nodeTypeName: string): ToolError {
	const error = new NodeTypeNotFoundError(nodeTypeName);
	return {
		message: error.message,
		code: 'NODE_TYPE_NOT_FOUND',
		details: { nodeTypeName },
	};
}

/**
 * Create a node parameter is too large error
 */
export function createNodeParameterTooLargeError(
	nodeId: string,
	parameter: string,
	maxSize: number,
): ToolError {
	const error = new ParameterTooLargeError('Parameter value is too large to retrieve', {
		parameter,
		nodeId,
		maxSize,
	});

View on GitHub (pinned to 5ac6606e81)

Solutions

  1. Install the missing node package so its type registers.
  2. Check the exact type string spelling (including scope prefix) against the registry.
  3. Substitute an equivalent built-in node type if the original is unavailable.
Defensive patterns

Strategy: type-guard

Validate before calling

import { findNodeType } from '@/tools/helpers/validation';

// Confirm the type is registered before operating on the node.
const nt = findNodeType(node.type, node.typeVersion ?? 1, nodeTypes);
if (!nt) { /* install missing package or pick a substitute type */ }

Type guard

function isRegisteredNodeType(typeName: string, types: INodeTypeDescription[]): boolean {
  return types.some((t) => t.name === typeName);
}

Try / catch

const res = await someTool.invoke(input);
if (isToolError(res) && res.code === 'NODE_TYPE_NOT_FOUND') {
  const missing = (res.details as any).nodeTypeName;
  // surface 'install package providing <missing>' to the operator
}

Prevention

When it happens

Trigger: A workflow references a node type that is not registered: missing community/custom node package, deprecated/renamed type, or version skew between workflow author and runtime.

Common situations: Community node not installed in this n8n instance; workflow authored on a newer version with a renamed type; custom node package failed to load.

Related errors


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