空HTTP响应

时间:2012-09-07 20:57:45

标签: node.js

出于某种原因,此代码仍然失败:

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

http.createServer(function(req, res) {

  // Request handlers
  var path = url.parse(req.url, true).pathname;
  var dot = path.lastIndexOf('.');
  var extension = path.substr(dot + 1);

  // Response handlers
  switch(extension) {
    case 'css' :
      res.writeHeader(200, {"Content-Type": "text/css"});
      fs.readFile(path.substr(1, dot - 1) + '.css', function (err, css) {
        if(err) {
          res.write(err, 'utf8')
        };
        res.write(css, 'utf8')
      });
      break;
    case 'js' :
      res.writeHeader(200, {"Content-Type": "text/javascript"});
      fs.readFile(path.substr(1, dot - 1) + '.js', function (err, js) {
        if(err) {
          res.write(err, 'utf8')
        };
        res.write(js, 'utf8')
      });
      break;
    default :
      res.writeHeader(200, {"Content-Type": "text/html"});
      jade.renderFile(path.substr(1, path.length) + '.jade', { title: 'test' }, function(err, html) {
        if(err) {
          res.write(err, 'utf8')
        };
        res.write(html, 'utf8');
      });
      break;
  }

  res.end();

}).listen(8080);

我没有收到任何错误,只是答案似乎是空的。 有一个标题但没有css或javascript文件。

我在Jade中链接它们的方式如下:

link(rel='stylesheet', href='/css/bootstrap.min.css')
link(rel='stylesheet', href='/css/style.css')

提前谢谢!

1 个答案:

答案 0 :(得分:3)

您过早致电res.end()。相反,请将其放在每个res.write()处理程序的最后fs.readFile之后。