繁体   English   中英

Node.js在远程网络上提供HTML文件

[英]Node.js serving a HTML file on a remote network

我是Node.js新手,所以我不确定是否有可能做我想完成的事情。 这是我的配置:

我的家庭网络上的Raspberry Pi上运行着一个Node.js服务器。 我在外部IP上有一个HTML文件。 我希望在此HTML文件上呈现React组件。

据我所知,人们已经使用Node服务器在本地HTML文件上显示js,因此该路径通常看起来像这样,假设目录名为“ dir”:

const express = require('express');
const app = express();

// Static Routes
app.use('/dist', express.static(path.join(__dirname, 'dir')));

// App Route
app.get('/', (req, res, next) => res.sendFile(path.join(__dirname, 
'index.html')));

据我所知,该文件将传输在先前指定的路径中找到的HTML文件。 但是,这转移到了哪里? 我可以基于外部IP +用户+密码以及文件路径指定路径名吗?

对于存储在远程计算机上的文件,您无法直接实现它。 Express静态路径仅适用于本地文件系统。

可能的方法是,每次收到新请求时从远程计算机获取文件。 但是没有人这样做。

据我所知,该文件将传输在先前指定的路径中找到的HTML文件。 但是,这转移到了哪里?

当客户端请求文件内容时(即不在服务器启动时),它将文件内容从磁盘传输到客户端的网络连接。

我可以基于外部IP +用户+密码以及文件路径指定路径名吗?

不能与express.static 如果要使服务器为外部页面服务(代理),可以执行以下操作: https : //stackoverflow.com/a/10435819/7011366 由于您可以访问url和cookie,因此您可以使用路径/用户/密码进行任何操作。

app.post('/my_url', function(req, res) {
  var options = {
    host:   MY_DOMAIN,
    path:   '/' + req.query.username,
    method: 'GET',
  };
  var req = http.request(options, function(res) {
    // etc...
    // send response to client
  }).on('error', function(e) {
    // handle error...
  }).end();
});

上面的示例在每个请求中都向外部页面发出一个请求。 如果您不希望这样做,可以将其存储在内存中,并仅定期进行更新。

let myHtml = "";
let fn = () => {
  var options = {
    host:   MY_DOMAIN,
    path:   '/' + req.query.username,
    method: 'GET',
  };
  var req = http.request(options, function(res) {
    // etc...
    // save response to myHtml as string
  }).on('error', function(e) {
    // handle error...
  }).end();
};
setInterval(fn, 60000);
fn();
app.post('/my_url', function(req, res) {
  res.end(myHtml);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM