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 に答える