Node.js, обслуживающий файл HTML в удаленной сети - PullRequest
0 голосов
/ 10 октября 2018

Я новичок Node.js, так что я не уверен, что возможно сделать то, что я пытаюсь сделать.Вот моя конфигурация:

У меня есть сервер Node.js, работающий на Raspberry Pi в моей домашней сети.У меня есть HTML-файл на внешний IP.Я хочу визуализировать компоненты React в этом HTML-файле.

Из того, что я видел, люди использовали серверы Node для отображения js в локальном HTML-файле, поэтому путь обычно выглядел бы так, предполагая каталогназывается '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 + пользователь + пароль и путь к файлу?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Который, насколько мне известно, передает файл HTML, найденный по ранее указанному пути.Но куда это передается?

Он передает содержимое файла с диска на сетевое подключение клиента, когда они запрашивают его (т. Е. Не при запуске сервера).

Каким-либо образом я могу указать имя пути на основе внешнего IP + пользователь + пароль и путь к файлу?

Не с express.static.Если вы хотите, чтобы ваш сервер обслуживал внешнюю страницу (прокси), вы можете сделать это: https://stackoverflow.com/a/10435819/7011366. Поскольку у вас будет доступ к URL-адресу и файлам cookie, вы можете делать все, что угодно, с путем / user /пароль.

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);
});
0 голосов
/ 10 октября 2018

Вы не можете достичь этого напрямую для файлов, хранящихся на удаленном компьютере.Экспресс-статический путь работает только с локальной файловой системой.

Возможным способом для этого может быть выборка файла с удаленного компьютера каждый раз, когда вы получаете новый запрос.Но никто не делает этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...