mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 18:12:04 +00:00
fix: Make sure errors are transferred correctly from js task runner (no-changelog) (#11214)
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import { ApplicationError } from 'n8n-workflow';
|
||||
|
||||
export type WrappableError = Record<string, unknown>;
|
||||
|
||||
/**
|
||||
* Errors received from the task runner are not instances of Error.
|
||||
* This class wraps them in an Error instance and makes all their
|
||||
* properties available.
|
||||
*/
|
||||
export class WrappedExecutionError extends ApplicationError {
|
||||
[key: string]: unknown;
|
||||
|
||||
constructor(error: WrappableError) {
|
||||
const message = typeof error.message === 'string' ? error.message : 'Unknown error';
|
||||
super(message, {
|
||||
cause: error,
|
||||
});
|
||||
|
||||
this.copyErrorProperties(error);
|
||||
}
|
||||
|
||||
private copyErrorProperties(error: WrappableError) {
|
||||
for (const key of Object.getOwnPropertyNames(error)) {
|
||||
if (key === 'message' || key === 'stack') {
|
||||
continue;
|
||||
}
|
||||
|
||||
this[key] = error[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function isWrappableError(error: unknown): error is WrappableError {
|
||||
return typeof error === 'object' && error !== null;
|
||||
}
|
||||
Reference in New Issue
Block a user