From 0f1b8779e43104ed6650fba66225aba8e4542ca7 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Thu, 23 Dec 2021 15:16:42 +0100 Subject: [PATCH] :zap: Add line numbers to errors --- .../nodes-base/nodes/Function/Function.node.ts | 12 ++++++++++++ .../nodes/FunctionItem/FunctionItem.node.ts | 15 +++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/packages/nodes-base/nodes/Function/Function.node.ts b/packages/nodes-base/nodes/Function/Function.node.ts index ac0c46f555..7abcb6b64e 100644 --- a/packages/nodes-base/nodes/Function/Function.node.ts +++ b/packages/nodes-base/nodes/Function/Function.node.ts @@ -127,6 +127,18 @@ return items;`, if (this.continueOnFail()) { items=[{json:{ error: error.message }}]; } else { + // Try to find the lien number which contains the error and attach to error message + const stackLines = error.stack.split('\n'); + if (stackLines.length > 0) { + const lineParts = stackLines[1].split(':'); + if (lineParts.length > 2) { + const lineNumber = lineParts.splice(-2, 1); + if (!isNaN(lineNumber)) { + error.message = `${error.message} [Line ${lineNumber}]`; + } + } + } + return Promise.reject(error); } } diff --git a/packages/nodes-base/nodes/FunctionItem/FunctionItem.node.ts b/packages/nodes-base/nodes/FunctionItem/FunctionItem.node.ts index 5e586a0b13..c0effffd66 100644 --- a/packages/nodes-base/nodes/FunctionItem/FunctionItem.node.ts +++ b/packages/nodes-base/nodes/FunctionItem/FunctionItem.node.ts @@ -120,6 +120,21 @@ return item;`, returnData.push({json:{ error: error.message }}); continue; } else { + // Try to find the lien number which contains the error and attach to error message + const stackLines = error.stack.split('\n'); + if (stackLines.length > 0) { + const lineParts = stackLines[1].split(':'); + if (lineParts.length > 2) { + const lineNumber = lineParts.splice(-2, 1); + if (!isNaN(lineNumber)) { + error.message = `${error.message} [Line ${lineNumber} | Item Index: ${itemIndex}]`; + return Promise.reject(error); + } + } + } + + error.message = `${error.message} [Item Index: ${itemIndex}]`; + return Promise.reject(error); } }