Действия HTML-компонента перенаправляются в экспресс - PullRequest
0 голосов
/ 22 октября 2019

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

Я кодировал тестирование своего приложения с моего собственного компьютера, поэтому, используя localhost в качестве URL-адреса для моего сервера, затем я объявил маршруты в экспрессе как /object/add, /object/edit/:id, /object/list и т. Д. ...

Кажется, что все они работают, однако я также использовал Handlebars для представлений, поэтому у меня есть такие компоненты, как

  <form action="/object/edit/{{id}}" method="POST">
       <div class="form-group">
           <button class="btn btn-success btn-block">Save</button>
       </div>
  </form>

В localhost это работает, однако я пытаюсь развернуть его в домене подподкаталог mydomain.com/app/crud, когда я делаю так, чтобы мои перенаправления указывали на mydomain.com/object/add вместо mydomain.com/app/crud/object/add, поэтому я получаю страницы с ошибками.

Я уже пытался настроить приложение под маршрутом, но это работает дляЭкспресс-маршрутизация не изменяет URL-адреса, исходящие от компонентов HTML.

Мои текущие объекты Express выглядят так

const app = express();
var router = express.Router();
router.use(require("./routes"));
router.use("/object", require("./routes/object"));
router.use("/personality", require("./routes/personality"));
app.use(host.baseUrl, router);

и мои маршрутизаторыкак

const express = require("express");
const router = express.Router();

const pool = require("../database");

router.get("/add", (req, res) => {
  res.render("object/add");
});

router.post("/add", async (req, res) => {
  const { name } = req.body;
  const object= {
    name
  };
await pool.query("INSERT INTO objectset ?", [object]);
  res.redirect("/object");
});

...

module.exports = router;

Я также пытался использовать

function handleRedirect(req, res) {
  const targetUrl = targetBaseUrl + req.originalUrl;
  res.redirect(targetUrl);
}
app.get('*', handleRedirect);

, но он портит все мои запросы CSS и практически все другие маршруты.

Есть ли способ, которым я могууправлять этими перенаправлениями? Может быть, вместо этого можно использовать htmlredirects?

...