带有Node.js的Chartjs:意外的令牌<

时间:2014-01-29 16:09:24

标签: javascript node.js chart.js

我正在尝试将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);

我知道路径很好,节点可以找到它所以问题是什么?

感谢您的帮助。

1 个答案:

答案 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();
});

请注意,此代码段根本不是通用解决方案,不能满足您的需求,也不会轻松扩展到多个文件。您可以查看一些项目以更好地了解解决方案: