TypeError: Cannot match against 'undefined' or 'null'
Code
client.createPet(pet, (err, {name, breed, age}) => {
if (err) {
return t.error(err, 'no error')
}
t.equal(pet, {name, breed, age}, 'should be equivalent')
})
Error
client.createPet(pet, (err, {name, breed, age}) => {
^
TypeError: Cannot match against 'undefined' or 'null'.
Why am I getting this error? My knowledge of ES6 led me to presume that this error should only arise if the array or object being destructured or its children is undefined
or null
.
I wasn't aware that function parameters are used as a match. And if they are then why is it only an error if I try to destructure one of them? (that isn't undefined
or null
).
this error should only arise if the array or object being destructured or its children is
undefined
ornull
.
Exactly. In your case, the object being destructured is either undefined
or null
. For example,
function test(err, {a, b, c}) {
console.log(err, a, b, c);
}
test(1, {a: 2, b: 3, c: 4});
// 1 2 3 4
test(1, {});
// 1 undefined undefined undefined
test(1);
// TypeError: Cannot match against 'undefined' or 'null'.