Я пытаюсь настроить приложения Express.js и React.js на одном сервере Ubuntu.Это VPS, который запускает Plesk Onyx , где у нас много виртуальных хостов, работающих через порт 80.
Для их непрерывной работы я установил и запустил навсегда , затем эти приложения запускаются на портах 3000
и 5000
(например).
Я выполнил команды:
forever start -c "node src/server" ./ -l ./express.log
forever start -c "npm start" ./ -l ./react.log
Ни один из файлов журнала ничего не сохраняет, но это неточка.Оба работают так же, как и в предыдущей командной строке, но в этих портах.
Как перенаправить по крайней мере порт React на 80 для этого единственного приложения?Обычно с PHP должно работать .htaccess
, но я не уверен в Nodejs.
Редактировать: Код формы, который отправляется из приложения React через Express (отлично работал с React.js перед сборкой с npm run build
:
Компонент React:
sendEmail(evt) {
evt.preventDefault();
(async () => {
let response = await fetch(
`${window.location.origin}/contacto`,
options
);
let data = await response.json();
if (!data.success) {
this.setState(
Object.assign(this.state, {
error: true,
texto: { error: <p>{data.message}</p> },
alert: {
visible: true,
tipo: "alert-danger"
}
})
);
} else {
this.setState(
Object.assign(this.state, {
error: false,
texto: { error: <p>{data.message}</p> },
alert: {
visible: true,
tipo: "alert-success"
}
})
);
document.getElementById("formulario-contacto").reset();
}
})();
}
Экспресс-материал:
// Static site init
server.use("/", express.static("build"));
server.post("/contacto", (req, res) => {
try {
server.mailer.send(
"email",
{
to: process.env.EMAIL_FROM,
subject: `Contacto ${req.body.asunto}`,
body: req.body
},
err => {
if (err) {
res.send({ success: false, message: err });
} else {
res.send({ success: true, message: "Mensaje enviado" });
}
}
);
} catch (err) {
res.send({ success: false, message: err });
}
});