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...
// ...
// ...
}();
Это зависит от запуска в свободном режиме.