Почему мой статический файловый сервер node отбрасывает запросы?

У меня есть стандартный статический файловый сервер node.js, который я хочу использовать, чтобы обслуживать обычные файлы html, js, css и jpg в одном каталоге (т.е. типичное одностраничное приложение HTML5). Я ожидал бы, что сервер node может справиться с этим должным образом. То, что я вижу, отличается.

Файл index.html обслуживается, но затем отбрасываются последующие запросы (т.е. они никогда не попадают на сервер). В моих инструментах chrome dev я вижу такие вещи:

GET http://projectcoho.cloudfoundry.com/css/coho.css  http://projectcoho.cloudfoundry.com/:7
GET http://projectcoho.cloudfoundry.com/sencha-touch/sencha-touch-debug.js  http://projectcoho.cloudfoundry.com/:8
GET http://projectcoho.cloudfoundry.com/coho-debug.js  http://projectcoho.cloudfoundry.com/:8

Но эти ресурсы существуют на сервере, и вы можете связаться с ними, если вы введете их URL напрямую. И для этих запросов мой callback в app.js никогда не вызывается (я могу сказать это, потому что console.log никогда не вызывается для этих файлов.

Вот файл app.js:

var path = ".";
var port = process.env.VCAP_APP_PORT || 3000;;

var file = new(static.Server) (path, {
  cache: 600
});

mime.define({
   'text/css': ['css'],
   'text/javascript': ['js'],
   'image/jpeg': ['jpg', 'jpeg']
});

http.createServer(function (request, response) {

    var uri = url.parse(request.url).pathname;
    var filename = libpath.join(path, uri);

    console.log("URI: " + request.url + " , filename: " + filename);

    libpath.exists(filename, function (exists) {
        console.log("Serving " + filename);
        if (!exists) {
            console.log("Not found");
            response.writeHead(404, {
                "Content-Type": "text/plain"
            });
            response.write("404 Not Found\n");
            response.end();
            return;
        }

        if (fs.statSync(filename).isDirectory()) {
            filename += '/index.html';
        }

        var type = mime.lookup(filename);
                file.serveFile(filename, 200, {'content-type' : type}, request, response);
    });
}).listen(port);

Что мне здесь не хватает?

Я использую node v0.6.15

Ответ 1

В конце концов, ответ заключался в том, что мой файл cache.manifest был неправильным. Клиентское приложение искало ресурсы в кеше, но этого не было. Когда я исправил манифест, все стало работать.