ES6 jsdom не может прочитать свойство 'innerHTML' из null - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь настроить модульное тестирование с Mocha при использовании jsDOM для имитации virtualDom для моего ES6;но я получаю ошибки с недавними

UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'innerHTML' of null

Вот мои настройки main.js

    const url = 'https://localhost/demo.json';
    const source = document.getElementById('row-template').innerHTML;
    const contentLoop = document.getElementById('feedback-loop');
    const searchForm = document.getElementById('searchForm');
    const searchInput = document.getElementById('searchInput');
    const ratingEntries = document.querySelectorAll('.ratings__button');
    const lengthContainer = document.querySelector('.length');

и мой тестовый файл просто включает этот файл main.js

Ошибка возникает в каждой строке, которая имеет метод .innerHTML

const main = require('../src/js/main');

Пока mocha работает с этим файлом dom.js https://gist.github.com/ChidinmaKO/cd5a35624285c07e61a5373c5c8ff3ea

Пожалуйста, помогите.Чего мне не хватает?

1 Ответ

0 голосов
/ 18 декабря 2018

У вас есть эта строка:

document.getElementById('row-template').innerHTML;

И эта ошибка:

не может прочитать свойство 'innerHTML' с нулевым значением

"Не удается прочитатьсвойство innerHTML "относится к вызову .innerHTML.Это говорит о том, что левая часть доступа к свойству, document.getElementById('row-template'), является null.Причина, по которой он пуст, заключается в том, что document.getElementById('row-template') не находит элемент HTML в документе с таким идентификатором.

Убедитесь, что идентификатор действительно присутствует в DOM.Очень распространенная ошибка - запуск вашего кода в блоке скрипта, который выполняется до того, как будет представлен весь документ HTML (например, если ваш элемент скрипта находится в <head/> HTML).Размещение кода в нижней части тела гарантирует, что остальная часть HTML действительно существует до запуска кода.

Если это происходит в вашем тесте, вы должны убедиться, что структура DOM ожидаемаяпо коду упорядочено по настройке теста.

...