Не удается подать файлы c с использованием express .Router? - PullRequest
1 голос
/ 29 января 2020

До того, как моя файловая система стала немного сложнее, я раньше обслуживал stati c файлы через app.use(express.static()). Теперь я использую express.Router(), и я подумал, что могу просто изменить app.use(express.static()) на router.use(express.static()), но это не работает. Выдает ошибку: Refused to apply style from ... because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

Есть ли способ, которым я могу обслуживать stati c файлы с router.use() вместо app.use()?

Файловая система:

/
..../chat
......../register
............/styles
................styles.min.css <-- This is the static file I want to serve
............index.html
............index.js
..../routes
........index.js
....index.js

/ route / index. js:

const express = require('express');
const router = express.Router();

router.use('/chat/register', require('../chat/register'));

router.get('/', (req, res) => res.redirect('/chat/register'));

module.exports = router;

/ chat / register / index. js:

const express = require('express');
const router = express.Router();

router.use('/styles', express.static('styles'));

router.get('/', (req, res) => {
  res.sendFile(`${__dirname}/index.html`);
});

module.exports = router;

/ index. js:

const express = require('express');
const app = express();

app.use(require('./routes'));

app.listen(process.env.PORT || 80);

console.log(`App is listening on port ${process.env.PORT || 80}`);

Извините, если вопрос сформулирован неверно или что-то в коде выглядит не так; Это моя первая публикация в Stack Overflow, и я также немного новичок в Node, Express и веб-серверах. Я учусь программировать в свободное время.

Ответы [ 2 ]

3 голосов
/ 29 января 2020

Вы должны изменить свой путь для css, так как он будет загружен сервером, чтобы использовать относительный путь для сервера, как показано ниже.

В вашем index.js

const express = require('express');
const router = express.Router();
const path = require('path');

router.use('/styles', express.static(path.join(__dirname, 'styles')));

router.get('/', (req, res) => {
  res.sendFile(`${__dirname}/index.html`);
});

module.exports = router;

0 голосов
/ 29 января 2020

Из express документов

путь, который вы указываете для функции express .stati c, относится к каталогу, из которого вы запускаете процесс узла.

Таким образом, чтобы принять это во внимание, вы должны изменить chat / register / index. js

const express = require('express');
const path = require('path');
const router = express.Router();

router.use('/styles', express.static(path.join(__dirname, 'styles')));

router.get('/', (req, res) => {
  res.sendFile(`${__dirname}/index.html`);
});

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