From 8f5f1c3aa520576215e16a8cc1a8beadae5f142a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E0=A4=95=E0=A4=BE=E0=A4=B0=E0=A4=A4=E0=A5=8B=E0=A4=AB?= =?UTF-8?q?=E0=A5=8D=E0=A4=AB=E0=A5=87=E0=A4=B2=E0=A4=B8=E0=A5=8D=E0=A4=95?= =?UTF-8?q?=E0=A5=8D=E0=A4=B0=E0=A4=BF=E0=A4=AA=E0=A5=8D=E0=A4=9F=E2=84=A2?= Date: Thu, 2 Feb 2023 01:00:24 +0100 Subject: [PATCH] fix(Mailchimp Trigger Node): Fix webhook recreation (#5328) --- packages/cli/src/workflows/workflows.services.ts | 8 ++++++-- .../nodes/Mailchimp/MailchimpTrigger.node.ts | 16 +++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/cli/src/workflows/workflows.services.ts b/packages/cli/src/workflows/workflows.services.ts index 7bc0b38f93..902896ac12 100644 --- a/packages/cli/src/workflows/workflows.services.ts +++ b/packages/cli/src/workflows/workflows.services.ts @@ -1,6 +1,6 @@ import { validate as jsonSchemaValidate } from 'jsonschema'; import type { INode, IPinData, JsonObject } from 'n8n-workflow'; -import { jsonParse, LoggerProxy, Workflow } from 'n8n-workflow'; +import { NodeApiError, jsonParse, LoggerProxy, Workflow } from 'n8n-workflow'; import type { FindOptionsWhere } from 'typeorm'; import { In } from 'typeorm'; import pick from 'lodash.pick'; @@ -336,8 +336,12 @@ export class WorkflowsService { // Also set it in the returned data updatedWorkflow.active = false; + let message; + if (error instanceof NodeApiError) message = error.description; + message = message ?? (error as Error).message; + // Now return the original error for UI to display - throw new ResponseHelper.BadRequestError((error as Error).message); + throw new ResponseHelper.BadRequestError(message); } } diff --git a/packages/nodes-base/nodes/Mailchimp/MailchimpTrigger.node.ts b/packages/nodes-base/nodes/Mailchimp/MailchimpTrigger.node.ts index 8496778bbd..524edc6def 100644 --- a/packages/nodes-base/nodes/Mailchimp/MailchimpTrigger.node.ts +++ b/packages/nodes-base/nodes/Mailchimp/MailchimpTrigger.node.ts @@ -165,13 +165,8 @@ export class MailchimpTrigger implements INodeType { // select them easily async getLists(this: ILoadOptionsFunctions): Promise { const returnData: INodePropertyOptions[] = []; - let lists, response; - try { - response = await mailchimpApiRequest.call(this, '/lists', 'GET'); - lists = response.lists; - } catch (error) { - throw new NodeApiError(this.getNode(), error); - } + const response = await mailchimpApiRequest.call(this, '/lists', 'GET'); + const lists = response.lists; for (const list of lists) { const listName = list.name; const listId = list.id; @@ -200,8 +195,11 @@ export class MailchimpTrigger implements INodeType { try { await mailchimpApiRequest.call(this, endpoint, 'GET'); } catch (error) { - if (error.statusCode === 404) { - return false; + if (error instanceof NodeApiError && error.cause && 'isAxiosError' in error.cause) { + if (error.cause.statusCode === 404) { + return false; + } + throw error; } throw new NodeApiError(this.getNode(), error); }