D3.js: Uncaught TypeError: Невозможно прочитать свойство 'document' из неопределенного

У меня действительно странная проблема с инициализацией d3.js. В самом скрипте d3.js в самом начале пытается получить var d3_document = this.document; но всплывает следующая ошибка:

Uncaught TypeError: Cannot read property 'document' of undefined

при отладке, this.document возвращает неопределенное.

я использую yo webapp создать проект. Он использует bower в качестве менеджера пакетов и gulp для процесса сборки (который использует babel для функций ES2015).

Самое смешное, что я протестировал его с xampp, и он отлично работает!

Буду признателен за несколько советов! Спасибо!

1 ответ

Похоже, что-то (Бабель, скорее всего) вставляет "use strict"; в начале файла сценария D3 или объединения его в другой файл с надписью "использовать строгий" вверху. Это означает this в глобальном масштабе (или в функции, вызываемой без определенного this) больше не является ссылкой на глобальный объект, это undefined, (В то время как в "свободном" режиме или в функции, вызываемой без this значение, this в глобальной области видимости - ссылка на глобальный объект, который также доступен через глобальную переменную `window1.)

Вы должны удалить свой d3.js из списка сценариев, преобразуемых Бабелем, и просто включите его как есть. Предполагая, что вы используете нормальный d3.js файл, это выглядит так:

!function() {
  var d3 = {
    version: "3.5.16"
  };
  var d3_arraySlice = [].slice, d3_array = function(list) {
    return d3_arraySlice.call(list);
  };
  var d3_document = this.document;
  // ...
  // ...
  // ...lots of stuff here...
  // ...
  // ...
}();

Это зависит от запуска в свободном режиме.

Другие вопросы по тегам