n8n-io/n8n · error · NodeOperationError
${error.message}
Error message
${error.message} What it means
Per-item catch in the MiniMax router's execute loop. When continueOnFail is disabled (the default for batch items), any error thrown by the selected operation's execute callback is re-thrown as a NodeOperationError annotated with the itemIndex and the original error's description. The original message is preserved as the NodeOperationError message.
Source
Thrown at packages/@n8n/nodes-langchain/nodes/vendors/MiniMax/actions/router.ts:49
break;
case 'video':
execute = video[miniMaxTypeData.operation].execute;
break;
default:
throw new NodeOperationError(this.getNode(), `The resource "${resource}" is not supported!`);
}
for (let i = 0; i < items.length; i++) {
try {
const responseData = await execute.call(this, i);
returnData.push(...responseData);
} catch (error) {
if (this.continueOnFail()) {
returnData.push({ json: { error: error.message }, pairedItem: { item: i } });
continue;
}
throw new NodeOperationError(this.getNode(), error, {
itemIndex: i,
description: error.description,
});
}
}
return [returnData];
}
View on GitHub (pinned to 5ac6606e81)
Solutions
- Read error.message — it is the underlying operation's message (e.g. a MiniMax API failure).
- Enable 'Continue On Fail' on the node if you want the batch to keep processing past the failing item.
- Inspect the item at error.itemIndex and fix or remove it.
- Address the root cause named in the underlying operation's error.
Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-validate each item's required parameters for the chosen operation before the loop,
// so per-item failures are caught as data errors rather than runtime throws.
function validateItemForOperation(item: INodeExecutionData, resource: string, operation: string): string | null {
if (!item || typeof item !== 'object') return 'item is missing';
if (resource === 'audio' && operation === 'transcribe' && !item.json?.audioUrl) {
return 'audio.transcribe requires item.json.audioUrl';
}
// extend per operation
return null;
} Type guard
function isItemIndexError(e: unknown): e is NodeOperationError & { itemIndex: number } {
return e instanceof NodeOperationError && typeof (e as { itemIndex?: number }).itemIndex === 'number';
} Try / catch
for (let i = 0; i < items.length; i++) {
try {
const responseData = await execute.call(this, i);
returnData.push(...responseData);
} catch (error) {
if (this.continueOnFail()) {
returnData.push({ json: { error: (error as Error).message }, pairedItem: { item: i } });
continue;
}
throw new NodeOperationError(this.getNode(), error, { itemIndex: i });
}
} Prevention
- Enable 'Continue On Fail' on the node when running batches where some items may be invalid.
- Pre-validate each item's required parameters for the chosen operation before the execute loop.
- Log the failing itemIndex so retries can target the specific item.
- Address the root-cause operation error rather than catching at the router level.
When it happens
Trigger: Any underlying operation (TTS, image generation, video generation, text) threw for item i. With continueOnFail off, the router stops the whole execution and surfaces the per-item error; with continueOnFail on, the error is captured into the item's JSON output and processing continues.
Common situations: One bad input item in a batch aborts the run; continueOnFail not enabled when partial success is desired; underlying API error (see errors 862–865, 868–875) propagated through the router.
Related errors
- ${error.message}
- ${error.message}
- ${error.message}
- The resource "${resource}" is not supported!
- The operation "${operation}" is not supported for resource "
AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12).
Data as JSON: /api/errors/898956bfb4291065.
Report an issue: GitHub.