为什么我的节点静态文件服务器删除请求?(Why is my node static file ser

2019-09-18 03:00发布

我有一个标准的node.js,我想用服务于同一目录下正常的HTML,JS,CSS和JPG文件(即 - 一个典型的HTML5单页的应用程序)的静态文件服务器。 我希望的是,节点服务器能够妥善处理这一点。 我看到的是不同的。

index.html文件送达,但随后后续请求被丢弃(即-他们从来没有使它的服务器)。 在我的Chrome浏览器开发工具,我看到这样的事情:

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

但是,这些资源存在于服务器上,如果你直接输入它们的网址,您可以联系他们。 而对于这些要求,我在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);

我缺少的是在这里吗?

我使用节点v0.6.15

Answer 1:

最后,得到的答案是,我的cache.manifest文件是不正确的。 客户端应用程序是在一个高速缓存寻找资源,但并不存在。 当我纠正清单,事情开始工作。



文章来源: Why is my node static file server dropping requests?
标签: http node.js