【问题标题】:d3.js undefined in Meteord3.js 在 Meteor 中未定义
【发布时间】:2015-11-13 20:27:34
【问题描述】:

我是一名经验丰富的 Meteor 开发人员,并且对 d3 也有经验……但我无法让他们一起工作!

我试过了:

meteor add d3js:d3,崩溃并产生:

d3 未定义

<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script> 崩溃并产生:

d3 未定义

<script src="d3.min.js" charset="utf-8"></script>,源代码位于我的项目目录的顶层,它崩溃并产生:

TypeError:无法调用未定义的方法“querySelector”

(前两个都在我的index.html文件的标题中)

一直以来,d3 在我的浏览器中仍未定义。

我已经更新了我所有的包和 Meteor,并且禁用了除了 d3js:d3 之外的所有 Meteor 包。

寻找解决方案(针对我可能的白痴)或变通方法。

编辑

添加: pete:jsdom 产生新的错误信息:

/Users/Admin/.meteor/packages/pete_jsdom/.0.0.2.1uo6lix++os+web.browser+web.cordova/npm/node_modules/jsdom/lib/jsdom.js:3 `jsdom 4.x 以后仅适用于 io.js 或 Node.js 4 或更高版本:https://github.co

【问题讨论】:

  • 第一个crashes and produces是什么意思?什么时候发生?已经在您运行 meteor add 时或仅在您启动应用程序时?

标签: javascript node.js d3.js meteor


【解决方案1】:

在我看来,您在其他地方有错误。以下在我的机器(osx)上运行良好:

meteor create d3
cd d3
meteor add d3js:d3
meteor

然后,在控制台打开我可以做的浏览器:

> typeof(d3)
"object"

> _.keys(d3)
["version", "ascending", "descending", "min", "max", "extent", "sum", "mean", "quantile", "median", "variance", "deviation", "bisectLeft", "bisectRight", "bisect", "bisector", "shuffle", "permute", "pairs", "zip", "transpose", "keys", "values", "entries", "merge", "range", "map", "nest", "set", "behavior", "rebind", "dispatch", "event", "requote", "selection", "ns", "select", "selectAll", "mouse", "touch", "touches", "interpolateZoom", "color", "hsl", "hcl", "lab", "rgb", "functor", "xhr", "dsv", "csv", "tsv", "timer", "round", "formatPrefix", "time", "locale", "format", "geo", "geom", "interpolateRgb", "interpolateObject", "interpolateNumber", "interpolateString", "interpolate", "interpolators", "interpolateArray", "ease", "interpolateHcl", "interpolateHsl", "interpolateLab", "interpolateRound", "transform", "interpolateTransform", "layout", "random", "scale", "svg", "transition", "text", "json", "html", "xml"]

【讨论】:

  • 我收到typeof(d3) "undefined"
  • 太奇怪了...我启动了一个新的流星实例并且 d3 加载正常。猜想我的东西移植过来了。谢谢@christian
【解决方案2】:

不确定您是否已包含此内容,但 try adding JSDOM

从 d3#3.5.4 开始,JSDOM 是一个开发依赖项。您需要将其作为依赖项包含在内。

【讨论】:

  • 检查更新发布...不确定这是正确的方法
  • @redress 嗯,你为什么不能升级到最新版本的Node? 4.0 或 5.0 都可以。
【解决方案3】:

确保您只在客户端上引用 d3。它在服务器端不可用,因此在服务器端使用它会导致应用程序崩溃。

【讨论】:

    【解决方案4】:

    使用

    meteor npm install d3
    

    而不是

    meteor add d3js:d3
    

    对我有用

    【讨论】:

    • 请先看这个how-to-answer这个问题之前回答过,显然,你可以在这里添加你的答案。但是在回答之前,您需要了解一些要点。首先,不要添加以前使用相同代码或建议添加的答案。其次,如果用户已经非常具体地询问了问题以及他需要解决什么问题,请不要添加过于复杂的答案。第三,如果您想对答案或问题提出任何建议,可以添加评论。
    • 我不太确定我的答案是否与此处的任何答案相同。我的建议是使用 d3 npm 包而不是流星包。
    猜你喜欢
    • 2016-12-14
    • 2015-05-05
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2017-10-24
    • 1970-01-01
    相关资源
    最近更新 更多