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


当前回答

你可以使用NPM服务包来实现这一点,如果你不需要NodeJS的东西,它是一个快速易用的工具:

1-在电脑上安装软件包:

npm install -g serve

2-使用Serve<path>服务静态文件夹:

d:> serve d:\StaticSite

它将显示静态文件夹的服务端口,只需导航到主机,如下所示:

http://localhost:3000

其他回答

一个好的“现成工具”选项可以是http服务器:

npm install http-server -g

要使用它:

cd D:\Folder
http-server

或者,像这样:

http-server D:\Folder

过来看:https://github.com/nodeapps/http-server

从…起npm@5.2.0,npm开始在通常的npm旁边安装一个新的二进制文件npx。现在,使用一行代码从当前目录创建静态http服务器:

npx serve

or

npx http-server

以下内容对我有用:

创建包含以下内容的文件app.js:

// app.js

var fs = require('fs'),
    http = require('http');

http.createServer(function (req, res) {
  fs.readFile(__dirname + req.url, function (err,data) {
    if (err) {
      res.writeHead(404);
      res.end(JSON.stringify(err));
      return;
    }
    res.writeHead(200);
    res.end(data);
  });
}).listen(8080);

创建包含以下内容的文件index.html:

Hi

启动命令行:

cmd

在cmd中运行以下命令:

node app.js

转到下面的URL,以chrome显示:

http://localhost:8080/index.html

这就是全部。希望这会有所帮助。

资料来源:https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/

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

添加包含以下内容的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"
  }

我知道它不是Node,但我使用了Python的SimpleHTTPServer:

python -m SimpleHTTPServer [port]

它运行良好,并与Python一起提供。