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