{#each Object.entries(errors.errorsByID) as [nodeID, nodeErrors], i} {@const first = nodeErrors[0]} {@const parent = getParentNode(first)} {@const last = i === Object.keys(errors.errorsByID).length - 1}
{first.comfyNodeType} {#if parent} ({parent.title}) {/if}
{#each nodeErrors as error} {@const isExecutionError = error.errorType === "execution"}
{#if missingTag && nodeToJumpTo}
Node "{nodeToJumpTo.title}" was missing tag used in workflow:{missingTag}
Tags on node: {(nodeToJumpTo?.properties?.tags || []).join(", ")}
{:else} {error.message} {/if} {#if error.exceptionType} ({error.exceptionType}) {/if} {#if error.exceptionMessage && !isExecutionError}
{error.exceptionMessage}
{/if} {#if nodeToJumpTo != null}
{#if missingTag} Jump to node: {nodeToJumpTo.title} {:else} Find disconnected input {/if}
{/if} {#if error.input && !missingTag}
Input: {error.input.name} {#if error.input.config} ({getInputTypeName(error.input.config[0])}) {/if}
{#if error.input.receivedValue}
Received value: {error.input.receivedValue}
{/if} {#if error.input.receivedType}
Received type: {error.input.receivedType}
{/if} {#if error.input.config}
{/if} {/if}
{#if error.traceback}
{#each error.traceback as line}
{line}
{/each}
{/if}
{/each}
{/each}