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
- Install the missing node package so its type registers.
- Check the exact type string spelling (including scope prefix) against the registry.
- 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
- Keep the node type registry in sync with installed packages.
- Validate every node.type in imported workflow JSON against the registry before operating.
- Pin node package versions to avoid rename/deprecation surprises on upgrade.
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
- INVALID_CONNECTION
- No serializer registered for format '${format}'. Provide a r
- No serializer registered for format '${format}'
- Unsupported provider: "${provider}". Supported providers: ${
- Unsupported embedding provider: "${provider}". Supported: ${
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/66a3bf46e46ff466.
Report an issue: GitHub.