带有Node.js的Chartjs:意外的标记<
我想用node.js来使用Chart.js。 我从下面的git源代码下载了Chart.js: https : //github.com/nnnick/Chart.js并用phptesting过,事情工作正常。
现在我正在使用node.js,但我有一个问题:
资源解释为脚本,但使用MIMEtypestext / html传输:“url / Chart.js / Chart.js”localhost /:3未捕获SyntaxError:意外标记</Chart.js/Chart.js:1
debug.html
<html><head> <script src="Chart.js/Chart.js"></script> </head></html>
index.js
var http=require('http'); var fs=require('fs'); var fichier=fs.readFileSync('debug.html', 'utf-8'); var server = http.createServer(function(req,res){ res.writeHead(200, {'Content-Type': 'text/html'}); res.write(fichier); res.end(); }); server.listen(80);
我知道path是好的,节点可以find它,那么问题是什么?
感谢您的帮助。
您的HTTP服务器不会查看请求的URL并始终发回相同的页面:
$ curl http://localhost/ <html><head> <script src="Chart.js/Chart.js"></script> </head></html> $ curl http://localhost/Chart.js/Chart.js <html><head> <script src="Chart.js/Chart.js"></script> </head></html> $ curl http://localhost/random/url <html><head> <script src="Chart.js/Chart.js"></script> </head></html>
然后解决scheme是查看req.url
并提供正确的文件:
var server = http.createServer(function(req,res){ if (req.url === 'Chart.js/Chart.js') { res.writeHead(200, {'Content-Type': 'application/javascript'}); fs.createReadStream('./Chart.js/Chart.js').pipe(res); return; } res.writeHead(200, {'Content-Type': 'text/html'}); res.write(fichier); res.end(); });
请注意,这段代码根本不是一个通用的解决scheme,并不适合您的需求,也不会轻易扩展到多个文件。 您可以查看一些项目,以更好地理解解决scheme:
- Raynos的http-framework ,它是一个基于
http
模块的非常简单的HTTP服务器的集合; -
connect
的静态中间件