Не может выполнить ни одного оператора в маршруте express, кроме последнего - PullRequest
0 голосов
/ 08 апреля 2020

Я установил маршрут express, который, как ожидается, будет обслуживать файл HTML, а именно:

app.use('/',express.static("../first-app/dist"));
var filepath=path.join(__dirname,"..","first-app","dist","index.html");
app.get('/', (req, res) => {

        console.log("hello");
        console.log("hello");
        res.sendFile(filepath);

});

При достижении маршрута '/' файл обслуживается правильно но ни одно из приведенных выше утверждений res.sendFile не выполняется. Это немного странно, потому что операторы должны выполняться последовательно. Неважно, что я напишу выше последней строки, ничего не будет выполнено.

Пожалуйста, помогите мне найти проблему в этом.

Заранее спасибо.

1 Ответ

0 голосов
/ 08 апреля 2020

Если ответ / файл отправляется, если это все ваши маршруты, и если вы не видите вывод из console.log("hello");, то единственный возможный ответ - этот маршрут:

app.use('/',express.static("../first-app/dist"));

это то, что отправляет файл. Из вашего кода это выглядит так, потому что index.html находится внутри ../first-app/dist, и если express.static() получает запрос на /, то он ищет index.html в целевом каталоге. Если он находит его, он отправляет его, и маршрутизация больше не продолжается.

Итак, у вас есть пара возможных решений.

  1. Перемещение index.html куда-то еще поэтому express.static() не найдет его, а затем сменит место, где вы строите filepath, на новое местоположение index.html.

  2. Добавьте параметр в express.static("../first-app/dist", {index: false}) to tell it not to look for index. htmlif the path is / `. Этот параметр задокументирован здесь .

  3. Переместите маршрут app.get('/', ...) перед маршрутом express.static(), чтобы он сначала получил запрос.

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