Как включить CSS файлы для маршрутизаторов API в Express? - PullRequest
0 голосов
/ 09 июня 2019

Я использую экспресс и руль. Проблема в том, что на страницах с такими URL-адресами, как http://localhost:5000/api/posts, нет файлов css. Однако такие маршрутизаторы, как http://localhost:5000 или http://localhost:5000/register, работают совершенно нормально.

каталоги

app
-server.js
-routes
  -api
    -posts.js
-public
  -css
  -images
-views
  -layout
    -main.handlebars
  -posts.handlebars

в server.js. (только важная часть)

app.engine('handlebars', exphbs());
app.set('view engine', 'handlebars');
app.use(express.static(path.join(__dirname, 'public')));

app.get('/', (req, res) => res.render('index'));
app.get('/register', (req, res) => res.render('register'));

app.use('/api/posts', require('./routes/api/posts'));

Поскольку я включил app.use(express.static(path.join(__dirname, 'public'))); в server.js, я подумал, что не должно быть никаких проблем со статическими файлами.

Однако в main.handlebars <link rel="stylesheet" href="css/main.css"> не работает. С другой стороны, <link rel="stylesheet" href="../css/main.css"> работал. Более того, это также сработало, если я изменил app.use('/api/posts', require('./routes/api/posts')); на app.use('/posts', require('./routes/api/posts')); Есть ли другие способы решения этой проблемы, если я не хочу менять здесь маршруты?

Ошибка, когда css не включена, была Refused to apply style from 'http://localhost:5000/api/css/main.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled. Однако я не знаю, как сделать общедоступный путь по умолчанию. для статических файлов, так как я уже включил app.use(express.static(path.join(__dirname, 'public')));.

1 Ответ

1 голос
/ 09 июня 2019

Для вашего css файла используйте href="/css/main.css". То, что вы используете, это относительный путь, проверьте вкладку сети в отладке браузера. Он загрузит http://localhost:5000/api/css/main.css, а не http://localhost:5000/css/main.css.

Кстати, если вы хотите создать RESTful API, я не думаю, что он должен отвечать на файл CSS.

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