fix(Stop and Error Node): Show error message when error type is an object (#17898)

This commit is contained in:
Shireen Missi
2025-08-01 16:28:15 +01:00
committed by GitHub
parent e97cd8afa1
commit aced4bf86f
3 changed files with 260 additions and 19 deletions

View File

@@ -3,9 +3,10 @@ import type {
INodeExecutionData,
INodeType,
INodeTypeDescription,
JsonObject,
} from 'n8n-workflow';
import { jsonParse, NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';
import { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';
import { createErrorFromParameters } from './utils';
const errorObjectPlaceholder = `{
"code": "404",
@@ -81,24 +82,13 @@ export class StopAndError implements INodeType {
async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
const errorType = this.getNodeParameter('errorType', 0) as 'errorMessage' | 'errorObject';
const { id: workflowId, name: workflowName } = this.getWorkflow();
const errorParameter =
errorType === 'errorMessage'
? (this.getNodeParameter('errorMessage', 0) as string)
: (this.getNodeParameter('errorObject', 0) as string);
let toThrow: string | JsonObject;
const { message, options } = createErrorFromParameters(errorType, errorParameter);
if (errorType === 'errorMessage') {
toThrow = this.getNodeParameter('errorMessage', 0) as string;
} else {
const json = this.getNodeParameter('errorObject', 0) as string;
const errorObject = jsonParse<JsonObject>(json);
toThrow = {
name: 'User-thrown error',
message: `Workflow ID ${workflowId} "${workflowName}" has failed`,
...errorObject,
};
}
throw new NodeOperationError(this.getNode(), toThrow);
throw new NodeOperationError(this.getNode(), message, options);
}
}