[英]Issue about serving html and drawing in node.js
我在node.js提供包含svg绘图的html文件时遇到了问题。
index.html包含一个图表,该图表与http://bl.ocks.org/mbostock/3883245的折线图相同
问题是,每当我通过快递服务器提供index.html时,都会得到一个空白页。(空白页为127.0.0.1:80)但是,如果我在本地打开index.html文件,则将出现折线图。 (页面在file:/// F:/d3/index.html上正常工作)
main.js源代码:
var app = require('express')();
var server = require('http').Server(app);
var fs = require('fs');
app.get('/', function(req, res){
var index = fs.readFileSync(__dirname + '/index.html', "utf8");
res.writeHead(200, {"Content-Type": "text/html"});
res.write(index);
res.end();
});
server.listen(80);
该图表由d3绘制。
我终于解决了这个问题。 node.js的服务器功能非常基础。 与IIS或Apache不同,节点没有Web服务器的概念。 需要手动处理每个文件请求。
var app = require('express')();
var server = require('http').Server(app);
var fs = require('fs');
//load d3 for index.html
app.get('/d3/d3.js', function(req, res){
var d3 = fs.readFileSync(__dirname + '/d3/d3.js', "utf8");
res.writeHead(200, {"Content-Type": "application/javascript"});
res.write(d3);
res.end();
});
//load chart data for d3
app.get('/data.tsv', function(req, res){
fs.readFile(__dirname + '/data.tsv', 'utf8', function(err, data){
if (err){
console.log(err);
}else{
console.log("data req received.")
res.writeHead(200, {"Content-Type": "text/plain"});
res.write(data);
res.end();
}
});
});
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
server.listen(80);
D3图表绘图已成功显示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.