Uncaught TypeError: невозможно прочитать свойство 'children' со значением null во время работы JavaScript в Chrome консоли - PullRequest
0 голосов
/ 19 июня 2020

Я получил эту ошибку при выполнении моего кода JS в chrome консоли

Uncaught TypeError: Cannot read property 'children' of null
    at getFollowers (<anonymous>:98:53)
    at <anonymous>:57:7

Моя функция

function getFollowers(){
  var followersDiv = document.querySelector('div[role="presentation"]').querySelector('li').parentElement.children;
  for (var i = 0;i<followersDiv.length;i++){
    var tempUser = followersDiv[i].lastElementChild.children[0].children[1];
    followers.push({
      userID: tempUser.children[0].textContent,
      userName: tempUser.children[1].textContent,
    });
  }
  document.querySelector('[aria-label="Close"]').click();
}

Кажется, здесь что-то не хватает в строке

 var tempUser = followersDiv[i].lastElementChild.children[0].children[1];

Кто-нибудь может мне с этим помочь?

1 Ответ

0 голосов
/ 19 июня 2020

Я бы не сказал, что в строке, которую вы указываете, чего-то не хватает. Я бы сказал, что данная строка ожидает, что что-то будет здесь, без предоставления достаточных гарантий.

Так или иначе, tempUser создан, пытаясь использовать что-то, что может иметь значение null. На мой взгляд, ваш код вполне оптимистичен c: вы предполагаете, что lastElementChild не пусто, у вас есть дочернее поле, которое является непустым массивом и т. Д. Каждый шаг после «followersDiv [i]» может привести к сбою, вы сделали не проверять содержимое значений.

Есть две стратегии, чтобы сделать ваш код более надежным, IMO:

  • Используйте внешнюю библиотеку, такую ​​как loda sh, чтобы иметь более надежный код . В частности, вы можете использовать _.get и _.isEmpty
  • Попробуйте использовать более точный селектор CSS в вашем querySelector, так как я не уверен, что вам нужно вручную просматривать DOM, если ваш селектор хорош достаточно. Таким образом, у вас не будет узлов, которые не соответствуют вашим ожиданиям.
...