带有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的静态中间件