Javascript D3.js:UncaughtTypeError:无法读取属性';文件';未定义的
我在d3.js初始化方面遇到了一个非常奇怪的问题。在d3.js脚本中,在一开始,它尝试获取Javascript D3.js:UncaughtTypeError:无法读取属性';文件';未定义的,javascript,d3.js,initialization,undefined,Javascript,D3.js,Initialization,Undefined,我在d3.js初始化方面遇到了一个非常奇怪的问题。在d3.js脚本中,在一开始,它尝试获取var d3_document=this.document但会弹出以下错误: Uncaught TypeError: Cannot read property 'document' of undefined 调试时,此.document返回未定义 我正在使用yowebapp生成项目。它将bower用作包管理器,并将gulp用于构建过程(将babel用于ES2015功能) 有趣的是,我已经用xampp对它进
var d3_document=this.document代码>但会弹出以下错误:
Uncaught TypeError: Cannot read property 'document' of undefined
调试时,此.document
返回未定义
我正在使用yowebapp
生成项目。它将bower用作包管理器,并将gulp用于构建过程(将babel用于ES2015功能)
有趣的是,我已经用xampp对它进行了测试,效果很好
我希望你能给我一些建议!Thnx 听起来好像有什么东西(最有可能是巴贝尔)正在插入“严格使用”代码>位于D3脚本文件的开头,或将其合并到另一个文件中,并在顶部显示“use strict”。这意味着全局范围内的this
(或在没有特定this
调用的函数中)不再是全局对象的引用,而是未定义的。(而在“松散”模式下或在无特定this
值调用的函数中,全局范围内的this
是对全局对象的引用,也可通过全局变量“window1”访问该对象。)
您需要从Babel正在转换的脚本列表中删除您的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...
// ...
// ...
}();
这取决于在松散模式下运行。有关设置的详细信息。没有这些细节,我不可能回答这个问题。Thnx,肯定是babel在脚本中附加了'use restrict'
。对于任何有同样问题的人,去了解如何在巴别塔5和巴别塔6中解决它。