2014-01-29 106 views
1

我想用node.js Chart.js。 我從下面的git源碼下載了Chart.js:https://github.com/nnnick/Chart.js 並使用php進行了測試,並且工作正常。Chartjs與Node.js:意外的令牌<

現在我用Node.js的工作,但我有一個問題:

Resource interpreted as Script but transferred with MIME type text/html: "url/Chart.js/Chart.js" localhost/:3 Uncaught SyntaxError: Unexpected token < /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); 

我知道路徑好,節點可以fi那麼問題是什麼?

謝謝你的幫助。

+0

如果你使用一個有效的HTML頁面(帶DOCTYPE和一切)和寫'類型=「文/ JavaScript的」'的'script'標籤 – Germain

+0

嗯...是不是它抱怨'Chart.js',第1行? –

+0

嘗試訪問'http:// localhost/Chart.js/Chart.js',您應該看到您的服務器始終爲每個請求提供相同的頁面,而不考慮路徑。 –

回答

1

你的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> 

然後將溶液看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(); 
}); 

請注意,此代碼段根本不是一個通用的解決方案,並且不適合您的需求,也不會輕鬆擴展到多個文件。你可以看一些項目,有一個更好的理解解決方案:

+0

是的,正如保羅在評論中所說,我沒有處理請求的網址。感謝您的幫助 ! – user3224275