我是Node.js新手,所以我不确定是否有可能做我想完成的事情。这是我的配置:
我有一个Node.js服务器在家庭网络的Raspberry Pi上运行。我在外部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 +用户+密码以及文件路径指定路径名吗?
答案 0 :(得分:1)
对于存储在远程计算机上的文件,无法直接实现。 Express静态路径仅适用于本地文件系统。
可能的方法是,每当您收到新请求时,从远程计算机获取文件。但是没有人这样做。
答案 1 :(得分:1)
据我所知,这将传输在先前指定的路径中找到的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);
});