Node.js 快速文件服务器(通过 HTTPS 的静态文件)

Node.js quick file server (static files over HTTPS)

我已经使用 node.js 应用程序中的这些命令成功地创建了带节点的 https 服务器:

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

var httpsOptions = {
    key: fs.readFileSync('path/to/server-key.pem'),
    cert: fs.readFileSync('path/to/server-crt.pem')
};

var app = function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}

http.createServer(app).listen(8888);
https.createServer(httpsOptions, app).listen(4433);

我想做的是从文件夹中创建 https 服务器 运行,类似于 this,用于 http-server。因此,如果我稍后在 https 文件夹中添加文件,则可以轻松地从 https://localhost:4433/main.js 访问文件(main.js 只是一个示例文件)。可以为 https 做吗?

是的,有可能。

参考这个回答

第一步.写一个服务器

您可以使用纯 node.js 模块来提供静态文件,也可以使用快速框架来解决您的问题。 https://expressjs.com/en/starter/static-files.html

步骤 2. 编写命令行脚本

您必须编写一个脚本,最好保存到 bin 文件夹中,该文件夹接受文件夹路径、端口等命令行参数并启动服务器。此外,您可以使用 node.js 使用 commander.js 等编写此类脚本

  1. 在请求中找到URL
  2. 使URL成为你的文件夹文件路径
  3. 通过文件路径读取文件数据
  4. 响应文件数据

示例如果您的文件夹有 1.txt 2.html

  • localhost:8000/1.txt 将得到 1.txt
  • localhost:8000/2.html 将得到 2.html
const http = require('http')
const fs = require('fs')
const path = require('path');

const server = http.createServer((req, res) => {  
  var filePath = path.join('.',req.url)
  // Browser will autorequest 'localhost:8000/favicon.ico'
  if ( !(filePath == "favicon.ico") ) {
    file = fs.readFileSync(filePath,'utf-8')
    res.write(file)
  }
  res.end();
});

server.listen(8000);