相关疑难解决方法(0)

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

我一直在尝试在Node.js中调用D3.我首先尝试使用脚本标记从D3的网站导入d3.v2.js,但随后阅读此主题:

我想从Cakefile运行d3

D3的作者建议应该'npm install d3'......我这样做了,我可以在节点控制台中成功调用它:

dpc@ananda:$ node
> var d3 = require("d3");
undefined
> d3.version;
'2.8.1' 
Run Code Online (Sandbox Code Playgroud)

但是,当尝试使用'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
Run Code Online (Sandbox Code Playgroud)

我意识到在其他地方,D3的作者已明确指出应该需要画布:

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

如:

var Canvas = require("canvas");
Run Code Online (Sandbox Code Playgroud)

但即便如此,(即使在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), …
Run Code Online (Sandbox Code Playgroud)

node.js d3.js

39
推荐指数
2
解决办法
4万
查看次数

标签 统计

d3.js ×1

node.js ×1