从nodejs服务器直接呈现和提供d3可视化

时间:2015-08-17 17:17:56

标签: javascript node.js d3.js

https://gist.github.com/Caged/6407459

我尝试了上面的链接代码,但它显示以下错误消息: TypeError:无法读取属性' querySelector'未定义的

您能告诉我问题或解决方案在哪里吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

错误来自

d3.select('body')

此选择在DOM中搜索元素“body”,但NodeJS不提供DOM。 DOM通常由浏览器提供。在NodeJS中,您必须指定DOM实现。 这在D3文档中有解释:

https://github.com/mbostock/d3/wiki#browser--platform-support

  

D3也在Node.js上运行。使用npm install d3进行安装。

     

请注意,因为Node本身缺少DOM和多个DOM   它存在实现(例如,JSDOM),你需要明确地   将DOM元素传递给d3方法,如下所示:

     

var d3 = require(“d3”),       jsdom = require(“jsdom”);

     

var document = jsdom.jsdom(),       svg = d3.select(document.body).append(“svg”);

您可以尝试分叉此项目:https://github.com/gregjopa/d3-server-side-demo。 它根据D3 Doc。

的建议使用jsdom作为DOM实现

答案 1 :(得分:0)

有一个方便的包,尝试npm install d3-node

也是一堆例子。 https://github.com/bradoyler/d3-node