我正在尝试将Chart.js与node.js一起使用。 我从以下git源代码下载了Chart.js:https://github.com/nnnick/Chart.js 并用PHP测试它,事情很好。
现在我正在使用node.js,但我有一个问题:
资源解释为脚本但以MIME类型传输 text / 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);
我知道路径很好,节点可以找到它所以问题是什么?
感谢您的帮助。
答案 0 :(得分:1)
您的HTTP服务器不会查看请求的网址,并且始终会返回相同的网页:
$ 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>
然后,解决方案是查看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();
});
请注意,此代码段根本不是通用解决方案,不能满足您的需求,也不会轻松扩展到多个文件。您可以查看一些项目以更好地了解解决方案:
http
模块的非常简单的HTTP服务器的集合; connect