是否有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中的基本静态文件服务器


当前回答

对于希望在NodeJS脚本中运行服务器的用户:

您可以使用expressjs/serve-static替换connect.static(从connect 3起不再可用):

myapp.js:

var http = require('http');

var finalhandler = require('finalhandler');
var serveStatic = require('serve-static');

var serve = serveStatic("./");

var server = http.createServer(function(req, res) {
  var done = finalhandler(req, res);
  serve(req, res, done);
});

server.listen(8000);

然后从命令行:

$npm安装finalhandler服务静态$node myapp.js

其他回答

Node.js上的小型命令行web服务器:miptleha http

完整源代码(80行)

我对这一页上的任何答案都没有太多的运气,然而,下面的答案似乎起了作用。

添加包含以下内容的server.js文件:

const express = require('express')
const path = require('path')
const port = process.env.PORT || 3000
const app = express()

// serve static assets normally
app.use(express.static(__dirname + '/dist'))

// handle every other route with index.html, which will contain
// a script tag to your application's JavaScript file(s).
app.get('*', function (request, response){
  response.sendFile(path.resolve(__dirname, 'dist', 'index.html'))
})

app.listen(port)
console.log("server started on port " + port)

还要确保您需要快递。根据您的设置运行yarn add express-save或npm install express-save(我可以推荐yarn,它非常快)。

您可以将dist更改为您提供内容的任何文件夹。对于我的简单项目,我没有从任何文件夹提供服务,所以我只是删除了dist文件名。

然后可以运行node server.js。由于我必须将项目上传到Heroku服务器,我需要将以下内容添加到package.json文件中:

  "scripts": {
    "start": "node server.js"
  }

安装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文件/

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

这是我的一个文件/轻量级node.js静态文件web服务器宠物项目,我相信它是一个快速而丰富的工具,当安装node.js(或Debian/Uubuntu上的nodejs遗留版本)时,它的使用就像在Linux/Unix/macOS终端(或Android上的termux)上发出这个命令一样简单:

curl pad.js.org | node 

(文档中有针对Windows用户的不同命令)

它支持不同的东西,我认为这些东西是有用的,

分层目录索引创建/服务具有不同标准的排序功能在Chrome、Firefox和其他浏览器上,通过[多文件]拖放和仅文件/文本复制粘贴以及系统剪贴板屏幕截图粘贴从浏览器上传可能存在一些限制(可以通过其提供的命令行选项关闭)文件夹/便笺创建/上传按钮为已知文件类型提供正确的MIME(可能禁用)可以作为npm包和本地工具进行安装,也可以作为Docker的永久服务进行线性安装HTTP 206文件服务(多部分文件传输),用于更快的传输从终端和浏览器控制台上传(事实上,它最初打算作为其他页面/域浏览器JS控制台的文件系统代理)CORS下载/上传(也可以关闭)轻松的HTTPS集成轻量级命令行选项,可实现更好的安全服务:使用node.js 8上的补丁,您无需先安装即可访问选项:curl pad.js.org | node--h或者先通过[sudo]npm install-g pad.js将其安装为系统全局npm包,然后使用其安装版本访问其选项:pad-h或者使用提供的Docker镜像,默认情况下使用相对安全的选项。[sudo]docker run--restart=always-v/files:/files--name pad.js-d-p 9090:9090 quay.io/ebraminio/pad.js

上述功能主要记录在工具主页上http://pad.js.org我使用了一些很好的技巧,这也是工具源本身的来源!

工具来源于GitHub,欢迎您的反馈、功能请求和⭐s