Javascript D3.js:UncaughtTypeError:无法读取属性';文件';未定义的

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对它进

我在d3.js初始化方面遇到了一个非常奇怪的问题。在d3.js脚本中,在一开始,它尝试获取
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中解决它。