Im Почему тип MIME меняется на text / html, когда я расширяю свой маршрут?

#javascript #node.js #express

#javascript #node.js #выразить

Вопрос:

ПРОБЛЕМА: итак, я разрабатываю экспресс-веб-приложение. И у меня есть страница корзины, к которой могут получить доступ мои клиенты, через маршрут «корневой URL / клиенты / заказы». И когда я пытаюсь получить доступ к этому маршруту, файл css и файл js не работают. Т.е. стили из файла css не работают, и файл js тоже не работает. Потому что оба их типа содержимого в заголовке запроса — «текст / html».

Я не сталкивался с этой проблемой, когда все мои маршруты расширялись на один шаг до корневого URL, например ‘корневой url / login’ или ‘корневой url / register’ или ‘корневой url / customers’, все работает нормально. Но когда я расширяю эти маршруты, например «корневой URL / клиенты / заказы», тогда я сталкиваюсь с этой проблемой. Кто-нибудь может мне помочь и почему именно это происходит?

Маршрут, который я использую для отображения этой конкретной страницы:

 app.get('/customers/orders', auth, orderController().index);
  

PS auth — это промежуточное программное обеспечение, чтобы убедиться, что пользователь вошел в систему.

‘OrderController’ :

 function orderController () {
return {
    async index(req, res){
      try{
        const orders = await Order.find({customer : 
        req.user._id}).populate('customer').sort({'createdAt' : -1});
        res.render('Customers/Order', {
          title : "Your orders-Pizza",
          orders : orders,
          moment : moment,
      });
    } catch (err) {
          if(err) {
            req.flash('error', 'Sorry something went wrong. Try again.');
            return res.redirect('/order');
          }
        }
    },

   }
  }
}
  

Редактировать после осознания моей ошибки
Вот мой код для обслуживания статических файлов (именно здесь я допустил ошибку):

 app.use(express.static('./public'));
  

Здесь я не использовал ‘/’ после public, верно? Итак, что я должен был сделать при связывании моего css-файла (или любого другого статического файла), перед именем файла включается ‘/’, например:

 <link rel="stylesheet" href="/css/css.css">
  

И файл js:

 <script src="/js/js.js" defer></script>
  

И вуаля!, все работает нормально.

Вывод Вы должны включить ‘/’ перед именем файла (или папки, если у вас есть файл внутри одного).

Комментарии:

1. Ваш экспресс-код маршрутизации, не видя никакого кода, нам действительно трудно понять, что вы ошиблись. 🙁 Если кода много, вам следует попробовать создать минимальный проверяемый пример проблемы.

2. Я действительно новичок во всей этой вещи с переполнением стека. Так что я не знаю, как здесь работать. Но там я включил коды. Надеюсь, это поможет вам что-то найти.

3. Помните, что если вы отображаете маршрут как -> /customers/orders и у вас есть ссылка в вашем html main.css , ваш браузер будет искать файл с именем /customers/orders/main.css , я предполагаю, что ваших статических ресурсов там нет?. Чтобы обойти это, не используйте относительные пути для статических ресурсов, например .. /assests/main.css и т. Д.

4. Я использую способ /assets/main.css для извлечения моих статических файлов. И, нет, это не ошибка 404. Файлы отправляются клиенту, просто браузер не хочет применять стили из этого файла из-за неправильного типа MIME.

5. Здесь все еще недостаточно подробностей, чтобы помочь, одна идея заключается в том, что одно из ваших промежуточных программ портит заголовки.