Я новичок Node.js, поэтому я не уверен, что можно сделать то, что я пытаюсь выполнить. Вот моя конфигурация:
У меня есть сервер Node.js, работающий на малине Pi в моей домашней сети. У меня есть HTML файл на внешнем IP-адресе. Я хочу отображать компоненты React в этом HTML файле.
Из того, что я видел, люди использовали серверы узлов для отображения 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 + пользователя + пароль и путь к файлу?
Который, насколько мне известно, передает HTML файл, найденный по ранее указанному пути. Но куда это переносится?
Он передает содержимое файла с диска на сетевое подключение клиента, когда он запрашивает его (то есть не при запуске сервера).
В любом случае я могу указать имя пути на основе внешнего IP + пользователя + пароль и путь к файлу?
Не с express.static
. Если вы хотите, чтобы ваш сервер обслуживал внешнюю страницу (проксирование), вы можете сделать это: qaru.site/questions/56383/.... Поскольку у вас будет доступ к url & cookies, вы можете делать все, что хотите, с помощью пути/пользователя/пароля.
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);
});
Вы не можете добиться этого напрямую для файлов, хранящихся на удаленном компьютере. Экспресс-статический путь работает только с локальной файловой системой.
Возможным способом для этого может быть выборка файла с удаленной машины каждый раз, когда вы получаете новый запрос. Но никто этого не делает.