diff --git a/.changeset/khaki-onions-teach.md b/.changeset/khaki-onions-teach.md new file mode 100644 index 0000000000..02630c1074 --- /dev/null +++ b/.changeset/khaki-onions-teach.md @@ -0,0 +1,5 @@ +--- +"viem": patch +--- + +Fixed undefined reference in `getNodeError`. diff --git a/src/utils/errors/getNodeError.test.ts b/src/utils/errors/getNodeError.test.ts index eda554673d..b343ec0dc6 100644 --- a/src/utils/errors/getNodeError.test.ts +++ b/src/utils/errors/getNodeError.test.ts @@ -297,6 +297,23 @@ test('ExecutionRevertedError', () => { `) }) +test('UnknownNodeError check with null cause in error chain', () => { + const error = new TransactionRejectedRpcError( + new Error('null cause', { cause: null }), + ) + const result = getNodeError(error, { + account: address.vitalik, + maxFeePerGas: parseGwei('10'), + maxPriorityFeePerGas: parseGwei('11'), + }) + expect(result).toMatchInlineSnapshot(` + [UnknownNodeError: An error occurred while executing: Transaction creation failed. + + Details: null cause + Version: viem@x.y.z] + `) +}) + test('Unknown node error', () => { const error = new TransactionRejectedRpcError( new RpcRequestError({ diff --git a/src/utils/errors/getNodeError.ts b/src/utils/errors/getNodeError.ts index 2bbfcce3e5..e780e77e16 100644 --- a/src/utils/errors/getNodeError.ts +++ b/src/utils/errors/getNodeError.ts @@ -68,7 +68,7 @@ export function getNodeError( const executionRevertedError = err instanceof BaseError ? err.walk( - (e) => (e as { code: number }).code === ExecutionRevertedError.code, + (e) => (e as { code: number } | null | undefined)?.code === ExecutionRevertedError.code, ) : err if (executionRevertedError instanceof BaseError)