0

由于某种原因,此代码一直失败:

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')

先感谢您 !

4

1 回答 1

3

你打电话res.end()太早了。相反,将它res.write()放在每个fs.readFile处理程序的最后一个之后。

于 2012-09-07T21:00:48.253 回答