Angular работает только, если я укажу app.get ("*" [...]); в моем server.js - PullRequest
0 голосов
/ 01 мая 2018

Я только начал разработку на стороне сервера JavaScript, и это мой первый проект с ним.

Это командный и управляющий сервер для моего собственного облачного сервера, работающий с angular, Expressjs и bootstrap. В данный момент у меня возникли проблемы с добавлением функциональности для кнопки остановки сервера.

Должен быть какой-то код для входа на сервер через ssh и выполнения всех необходимых действий, чтобы корректно завершить работу.

Проблема в том, что я действительно не могу (и не хочу) добавлять это через скрипт браузера, так как хочу использовать библиотеку ssh. Запуск сценария на стороне сервера нажатием кнопки не представляется возможным (скажите, пожалуйста, как, если это так или иначе, это решило бы все мои проблемы:)).

Поэтому я подумал, что смогу перенаправить пользователя на страницу /on, когда он нажимает кнопку и выполняет действия в функции обратного вызова app.get. И вот проблема: в моем server.js (сервере главного узла) у меня есть «две» конечные точки, определенные на данный момент

app.get("*", (req, res) =>{
  res.sendFile(path.join(__dirname, "src/index.html"));
});

и

app.get("/on", (req, res) =>{
  console.log("redirecting...");
  //DO SOMETHING
  res.redirect("/");
});

Во втором я бы хотел выполнить ssh-действия. Но когда я изменяю первый блок кода на (обратите внимание на / вместо *)

app.get("/", (req, res) =>{
  res.sendFile(path.join(__dirname, "src/index.html"));
});

У всего приложения, похоже, больше нет угловатости. Все угловые компоненты отображаются, но они просто пусты и не заполнены содержимым, которое я определил в app.component.html. Почему это происходит и как я могу это исправить? Спасибо за любую помощь ;) PS: вы можете найти весь код на: GitHub

1 Ответ

0 голосов
/ 01 мая 2018

Есть несколько вещей, которые вы бы предпочли сделать, но чтобы краткий ответ, вам нужно несколько изменений, чтобы вы могли его запустить и запустить, во-первых, app.get("*", ...) перенаправляет каждый переход к этому блоку кода, поэтому вам нужно сделать это:

//Parsers
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

//Angular DIST output folder
app.use(express.static(path.join(__dirname, "dist")));


app.get("/", (req, res) =>{
  res.sendFile(path.join(__dirname, "dist/index.html"));
});

app.get("/on", (req, res) =>{
  console.log("redirecting...");
  //DO SOMETHING
  res.redirect("/");
});

Обратите внимание на одно изменение: вы не хотите вызывать src / index, вы хотите создать папку angular to dist и использовать этот index.html, во-вторых, маршрут "/" перенаправит на домашнюю страницу, " / on "теперь введет желаемую конечную точку. Если это почти все, что вы хотите сделать с конечными точками, я думаю, это хорошо, но если вы хотите создать что-то более сложное, я бы абстрагировал вещи. надеюсь, это поможет, ура. breakpoint was on line 21 and it entered as soon as i did the localhost:3000/on

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