我是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);
答案 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);
});