2013-03-03 73 views
0

我正在運行一個呈現jade文件的網絡服務器。在玉文件中,我有一些JavaScript文件。該頁面呈現良好,但沒有找到JavaScript文件。Jade無法鏈接到JavaScript文件+ node.js

節點服務器

var http = require('http') 
    , url = require('url') 
    , fs = require('fs') 
    , jade = require('jade') 
    , server; 

server = http.createServer(function(req, res) { 
    var path = url.parse(req.url).pathname; 

    switch (path) { 

    case '/audio': 
     var options = {pretty: true}; 
     jade.renderFile('myJadeFile.jade', options, function(err, html) { 
      if (err) return send404(res); 
      res.writeHead(200, {"Content-Type": "text/html"}); 
      res.write(html, 'utf8'); 
      res.end(); 
     }); 
     break; 

    default: send404(res); 
    } 
}); 

function send404(res) { 
    res.writeHead(404); 
    res.write('404'); 
    res.end(); 
} 

server.listen(3000, function() { 
    console.log("listening on port:3000"); 
}); 

玉文件

!!! 5 
html(lang="en") 
    head 
    meta(charset="UTF-8") 
    title Please Work 
    script(src="myJSFile.js") 
    body 
    #container 
     h1 It worked! 

我得到這個錯誤:
GET http://localhost:3000/myJSFile.js 404 (Not Found)

它沒有找到該文件,我不知道是什麼我必須穿上服務器側面的玉器選項來查找JavaScript文件。所有文件都在同一個文件夾中。

有什麼建議嗎?

+0

你見過:http://expressjs.com – 2013-03-05 00:08:29

回答

1

Jade是一個HTML呈現工具,所以它呈現標準的<script>標記。它不會將JS編譯成HTML文件本身。您需要在您的case中提供處理任何相關文件的處理程序,以便瀏覽器可以取回它們。

下面是這個特定案例的一個例子,假設您的myJSFile.js與您的服務器文件在同一個目錄中。

case '/myJSFile.js': 
    fs.createReadStream(__dirname + path).pipe(res); 
    break; 
+0

謝謝。我使用'fs.readFile()'來處理依賴文件,但我更喜歡'fs.createReadStream()'! – user1460015 2013-03-04 02:30:24