是否有Node.js即用工具(与npm一起安装),可以帮助我通过HTTP将文件夹内容作为文件服务器公开。

例如,如果我有

D:\Folder\file.zip
D:\Folder\file2.html
D:\Folder\folder\file-in-folder.jpg

然后从D:\Folder\node node-file-server.js开始我可以通过

http://hostname/file.zip
http://hostname/file2.html
http://hostname/folder/file-in-folder.jpg

为什么我的节点静态文件服务器丢弃请求?参考一些神秘的

标准node.js静态文件服务器

如果没有这样的工具,我应该使用什么框架?

相关:NodeJS中的基本静态文件服务器


当前回答

如果您使用Express框架,此功能随时可用。

要设置简单的文件服务应用程序,只需执行以下操作:

mkdir yourapp
cd yourapp
npm install express
node_modules/express/bin/express

其他回答

使用connect的简单静态服务器

var connect = require('connect'),
  directory = __dirname,
  port = 3000;

connect()
  .use(connect.logger('dev'))
  .use(connect.static(directory))
  .listen(port);

console.log('Listening on port ' + port);

另请参见将node.js用作简单的web服务器

为了使用节点服务静态资源来健康地提高性能,我建议使用Buffet。它的工作方式类似于web应用程序加速器,也称为缓存HTTP反向代理,但它只是将所选目录加载到内存中。

Buffet采用了一种完全缓冲的方法——当您的应用程序启动时,所有文件都会完全加载到内存中,因此您永远不会感觉到文件系统被烧毁。实际上,这是非常有效的。如此之多,以至于将Varnish放在应用程序前面甚至可能会使其变慢! 

我们在codePile网站上使用它,发现在1k并发用户连接负载下下载25个资源的页面上,请求数增加了约700个/秒,达到超过4k个/秒。

例子:

var server = require('http').createServer();

var buffet = require('buffet')(root: './file'); 

 

server.on('request', function (req, res) {

  buffet(req, res, function () {

    buffet.notFound(req, res);

  });

});

 

server.listen(3000, function () {

  console.log('test server running on port 3000');

});

安装npm包

npm永远安装http服务器

永远启动$(哪个http服务器)-p 8000-d false[FILE_DIRECTORY]

永远启动/usr/local/lib/node_modules/http-server/bin/http服务器-p 8000/home/web文件/

替代地,

http服务器-p 8000/home/web文件/

为了搜索者的利益,我喜欢Jakub g的答案,但需要一点错误处理。显然,正确处理错误是最好的,但这有助于防止站点在发生错误时停止。代码如下:

var http = require('http');
var express = require('express');

process.on('uncaughtException', function(err) {
  console.log(err);
});

var server = express();

server.use(express.static(__dirname));

var port = 10001;
server.listen(port, function() { 
    console.log('listening on port ' + port);     
    //var err = new Error('This error won't break the application...')
    //throw err
});

如果您对超轻http服务器感兴趣,无需任何先决条件你应该看看:猫鼬