如何在Node.js中正确使用D3?

我一直在尝试在js" title="Node.js">Node.js中调用D3。我首先尝试使用脚本标签从D3的网站导入d3.v2.js

D3的作者建议一个人应该“ npm install d3” …我做到了,我可以在节点控制台中成功调用它:

dpc@ananda:$ node

> var d3 = require("d3");

undefined

> d3.version;

'2.8.1'

但是,当尝试使用“ node app.js”从app.js调用它时,我得到:

node.js:201

throw e; // process.nextTick error, or 'error' event on first tick

^

TypeError: Cannot read property 'BSON' of undefined

at /Users/dpc/Dropbox/sync/Business/MindfulSound/Development/nad.am/nadam/node_modules/mongoose/node_modules/mongodb/lib/mongodb/index.js:45:44

我意识到,D3的作者在其他地方已经明确规定了应该使用画布:

https://github.com/mbostock/d3/blob/master/examples/node-canvas/us-

counties.js

如:

var Canvas = require("canvas");

但是即使如此,(即使在app.js的require语句中特别要求使用index.js而不是d3.v2.js),我也无法在Jade模板中进行以下操作:

- script('/javascripts/d3.v2.js')

h1 Dashboard

section.css-table

section.two-column

section.cell

hr.grey

h2 Statistics

#mainGraph

script(type="text/javascript")

var Canvas = require("canvas");

var w = 400,

h = 400,

r = Math.min(w, h) / 2,

data = d3.range(10).map(Math.random).sort(d3.descending),

color = d3.scale.category20(),

arc = d3.svg.arc().outerRadius(r),

donut = d3.layout.pie();

var vis = d3.select("body").append("svg")

.data([data])

.attr("width", w)

.attr("height", h);

var arcs = vis.selectAll("g.arc")

.data(donut)

.enter().append("g")

.attr("class", "arc")

.attr("transform", "translate(" + r + "," + r + ")");

var paths = arcs.append("path")

.attr("fill", function(d, i) { return color(i); });

paths.transition()

.ease("bounce")

.duration(2000)

.attrTween("d", tweenPie);

paths.transition()

.ease("elastic")

.delay(function(d, i) { return 2000 + i * 50; })

.duration(750)

.attrTween("d", tweenDonut);

function tweenPie(b) {

b.innerRadius = 0;

var i = d3.interpolate({startAngle: 0, endAngle: 0}, b);

return function(t) {

return arc(i(t));

};

}

function tweenDonut(b) {

b.innerRadius = r * .6;

var i = d3.interpolate({innerRadius: 0}, b);

return function(t) {

return arc(i(t));

};

section.cell

hr.grey

h2 Achievements

回答:

在Node中使用D3的正确方法是使用NPM安装d3,然后再安装到require它。您可以npm install d3使用

文件,也可以使用npm install

{

"name": "my-awesome-package",

"version": "0.0.1",

"dependencies": {

"d3": "3"

}

}

将d3放入node_modules目录后,可通过 加载它:

var d3 = require("d3");

就是这样。

关于您的其他问题:不需要使用D3画布。链接的节点画布示例需要画布,因为它渲染为画布。TypeError(无法读取未定义的属性“

BSON”,未定义)似乎与您使用猫鼬/ monogdb有关,与D3无关。

以上是 如何在Node.js中正确使用D3? 的全部内容, 来源链接: utcz.com/qa/425466.html

回到顶部