Car*_*aya 10 javascript initialization undefined d3.js
d3.js启动时我遇到了一个非常奇怪的问题.在d3.js脚本中,在最开始时,它会尝试获取var d3_document = this.document;但会弹出以下错误:
Uncaught TypeError: Cannot read property 'document' of undefined
Run Code Online (Sandbox Code Playgroud)
调试时,this.document返回undefined.
我正在yo webapp用来生成项目.它使用bower作为包管理器和gulp用于构建过程(使用babel用于ES2015功能).
有趣的是,我用xampp测试了它,它工作正常!
我很感激一些建议!Thnx!
T.J*_*der 13
听起来像是(Babel,很可能)"use strict";在D3脚本文件的开头插入或者将其组合到另一个文件中,顶部是"use strict".这意味着this在全局范围内(或在没有特定的情况下调用的函数this)不再是对全局对象的引用,它就是undefined.(在"松散"模式下或在没有特定this值的函数中,this在全局范围内是对全局对象的引用,也可以通过全局变量`window1访问.)
您需要d3.js从Babel转换的脚本列表中删除您,并按原样包含它.假设您正在使用普通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...
// ...
// ...
}();
Run Code Online (Sandbox Code Playgroud)
这依赖于以松散模式运行.