serveStatic()无法找到文件

时间:2015-04-12 16:57:10

标签: node.js

我是node.js的新手,我正在尝试使用serveStatic函数来查找特定文件。

当我在参数中指定确切的路径时,它不起作用。但是它仅在我仅指定目录时才有效,并将该目录中的文件命名为index.html。

有关如何使用它找到特定文件的任何想法?任何帮助都会非常感谢你们!谢谢!

以下是我的代码

    var connect = require('connect'),
        http = require('http'),
        serveStatic = require('serve-static');




    var app = connect();


   // app.use(serveStatic('public')); Works 


    app.use(serveStatic('public/test.html'));// doesn't work 
    app.use(function(req, res){


    });

    http.createServer(app).listen(3000);

1 个答案:

答案 0 :(得分:0)

serve-static用于提供整个目录(包含所有子目录,如果有的话)。您不能使用它只提供一个文件。

使用serve-static可以执行的操作是set a default file to be sent when user requests a root of your directory(默认情况下是index.html文件):

app.use(serveStatic('public', {index: 'test.html'}));

但如果您真的只想发送一个文件,那么最好使用this answer

app.use(function(req, res) {
  res.sendfile('test.html', {
    root: __dirname + '/public/'
  });
});

尽管如此,最好的解决方案是读取此文件一次并缓存它。在这种情况下,每次有人请求此文件时都不需要访问您的存储设备:

var html_data = require('fs').readFileSync('./public/test.html');

app.use(function(req, res) {
  res.send(html_data);
});