1.8 KiB
Error handling with node-fetch
Because window.fetch
isn't designed to be transparent about the cause of request errors, we have to come up with our own solutions.
The basics:
- A cancelled request is rejected with an
AbortError
. You can check if the reason for rejection was that the request was aborted by checking theError
'sname
isAbortError
.
const fetch = require('node-fetch');
(async () => {
try {
await fetch(url, {signal});
} catch (error) {
if (error.name === 'AbortError') {
console.log('request was aborted');
}
}
})();
-
All operational errors other than aborted requests are rejected with a FetchError. You can handle them all through the
try/catch
block or promisecatch
clause. -
All errors come with an
error.message
detailing the cause of errors. -
All errors originating from
node-fetch
are marked with a customerr.type
. -
All errors originating from Node.js core are marked with
error.type = 'system'
, and in addition contain anerror.code
and anerror.errno
for error handling. These are aliases for error codes thrown by Node.js core. -
Programmer errors are either thrown as soon as possible, or rejected with default
Error
witherror.message
for ease of troubleshooting.
List of error types:
- Because we maintain 100% coverage, see test/main.js for a full list of custom
FetchError
types, as well as some of the common errors from Node.js