nodeJS项目中的d3库文件找不到CSV文件

我想testing图书馆TechanJS 。

我的计划是放入一些实时数据并将其绘制到屏幕上。

不过,我在我的nodeJS项目中创build了一个index.ejs,只是想尝试一下这个示例 :

<!DOCTYPE html> <meta charset="utf-8"> <style> body { font: 10px sans-serif; } .axis path, .axis line { fill: none; stroke: #000; shape-rendering: crispEdges; } path.line { fill: none; stroke: #000000; stroke-width: 1; } </style> <body> <script src="http://d3js.org/d3.v3.min.js"></script> <script src="http://techanjs.org/techan.min.js"></script> <script> var margin = {top: 20, right: 20, bottom: 30, left: 50}, width = 960 - margin.left - margin.right, height = 500 - margin.top - margin.bottom; var parseDate = d3.time.format("%d-%b-%y").parse; var x = techan.scale.financetime() .range([0, width]) .outerPadding(0); var y = d3.scale.linear() .range([height, 0]); var close = techan.plot.close() .xScale(x) .yScale(y); var xAxis = d3.svg.axis() .scale(x) .orient("bottom"); var yAxis = d3.svg.axis() .scale(y) .orient("left"); var svg = d3.select("body").append("svg") .attr("width", width + margin.left + margin.right) .attr("height", height + margin.top + margin.bottom) .append("g") .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); d3.csv("data.csv", function(error, data) { var accessor = close.accessor(); data = data.slice(0, 200).map(function(d) { return { date: parseDate(d.Date), open: +d.Open, high: +d.High, low: +d.Low, close: +d.Close, volume: +d.Volume }; }).sort(function(a, b) { return d3.ascending(accessor.d(a), accessor.d(b)); }); x.domain(data.map(accessor.d)); y.domain(techan.scale.plot.ohlc(data, accessor).domain()); svg.append("g") .datum(data) .attr("class", "close") .call(close); svg.append("g") .attr("class", "x axis") .attr("transform", "translate(0," + height + ")") .call(xAxis); svg.append("g") .attr("class", "y axis") .call(yAxis) .append("text") .attr("transform", "rotate(-90)") .attr("y", 6) .attr("dy", ".71em") .style("text-anchor", "end") .text("Price ($)"); }); console.log("test", d3); </script> 

当看在控制台我得到:

 "NetworkError: 404 Not Found - http://localhost:3000/data.csv" data.csv TypeError: data is undefined data = data.slice(0, 200).map(function(d) { localhost:3000 (Row 62, Column 8) 

我把我的data.csv放在与我的index.ejs相同的文件夹中。

任何build议我做错了什么?

我感谢您的回复!

如果您使用类似静态中间件的东西,则必须将data.csv放在资产文件夹中,例如。 公开/数据和引用它作为“data / data.csv”这样的代码(未testing,但我相信类似的东西应该工作)

 d3.csv("data/data.csv", function(error, data) {...} 

或者,您可以根据请求创build一个新的路线服务文件,说(如果您使用快递)

 app.get('/data', function(req, res) { fs.readFile('path/to/data.csv', 'utf8', function (err, data) { res.send(data); }); });