Проблема с маршрутизацией CSS на моем сервере Node Express - PullRequest
0 голосов
/ 24 января 2019

Я создаю серверную часть для своей веб-страницы с файловой структурой, подобной этой:

public
  css
    main.css
    main_b.css
  index.hbs
  index_b.hbs
server
  server.js

На таблицы стилей ссылаются в индексных файлах с помощью атрибутов ссылок, содержащих:

rel = "stylesheet" type = "text / css" href = "main.css"

rel = "stylesheet" type = "text / css" href = "main_b.css"

Вот мой server.js:

const path = require('path');
const fs = require('fs');

const express = require('express');

const app = express();

const hbs = require('hbs');

hbs.registerPartials(path.join(__dirname, '../public/partials'));
app.set('view engine', 'hbs');

app.use(express.static(path.join(__dirname, '../public/css')));

// activity logger 
app.use((req, res, next) => {
  const now = new Date().toString();
  const logEntry = `${now}: ${req.headers.host} ${req.method}${req.url}`;
  fs.appendFile(path.join(__dirname, '../server/server.log'), logEntry.concat('\n'), (error) => {
    if (error) {
      console.log(error);
    }
  });
  process.env.route = req.path;
  next();
});

app.get('*', (req, res) => {
  switch (process.env.route) {
    case '/': // home page
      res.render('../public/index.hbs');
      break;
    case '/b': // basic layout 
      res.render('../public/index_b.hbs');
      break;

    default: // unknown routes
      res.render('../public/index.hbs');
  }
});

app.listen(3000);

При запросе localhost: 3000, запись в журнале в порядке:

Чт 24 января 2019 07:57:08 GMT+0200 (Восточноевропейское стандартное время): localhost: 3000 GET /

При запросе localhost: 3000 / abc, запись в журнале также в порядке:

Чт 24 января 201907:57:08 GMT + 0200 (восточноевропейское стандартное время): localhost: 3000 GET / abc

И проблема проявляется при запросах на тестирование с суб-маршрутами, такими как localhost: 3000 / abc / def,css не отображается и запись в журнале:

чт 24 января 2019 08:04:55 GMT + 0200 (стандартное время Восточной Европы): localhost: 3000 GET / abc / def чт 24 января2019 08:04:56 GMT + 0200 (Стандартное время Восточной Европы): localhost: 3000 GET / abc / teamk-reset.css Чт 24 января 2019 08:04:56 GMT + 0200 (Стандартное время Восточной Европы): localhost: 3000 GET / abc / main.css

Я видел, что часть маршрута используется для изменения пути поиска css, и попытался решить проблему с помощью свойств индекса и перенаправления объекта параметров в Express.static (), но безуспешно.

Был бы рад получить некоторые указания / справки, в противном случае, вероятно, мне следует изменить рефакторинг моего подхода к запросу маршрута.

1 Ответ

0 голосов
/ 26 января 2019

Я обнаружил проблему с моим кодом,

На таблицы стилей должны ссылаться в индексных файлах атрибуты ссылок, содержащие:

rel = "stylesheet" type = "text / css"href =" / main.css "

rel =" stylesheet "type =" text / css "href =" / main_b.css "

, их имена начинаются с '/ 'для правильного построения поискового URL.

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