Empty HTTP response

For some reason, this code keeps failing :

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

I don't get any errors, it's just that the responses seem to be empty. There is a header but no css or javascript file.

The way I link them in Jade is the following :

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

Thank you in advance !

You've called res.end() too soon. Instead, put it after the last res.write() in each of your fs.readFile handlers.