Sebelum sistem file saya menjadi sedikit lebih rumit, saya biasa menyajikan file statis melalui app.use(express.static()). Sekarang, saya menggunakan express.Router() dan saya pikir saya bisa mengubah app.use(express.static()) menjadi router.use(express.static()), tetapi tidak berhasil. Itu melempar kesalahan: Refused to apply style from ... because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

Apakah ada cara saya dapat menyajikan file statis dengan router.use() alih-alih app.use()?

Berkas sistem:

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

/routes/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}`);

Maaf jika pertanyaannya salah kata atau ada sesuatu dalam kode yang terlihat keluar jalur; ini adalah pertama kalinya saya memposting ke Stack Overflow dan saya juga baru mengenal Node, Express, dan server web. Saya belajar memprogram pada waktu saya sendiri.

1
R M 29 Januari 2020, 06:46

2 jawaban

Jawaban Terbaik

Dari dokumen ekspres

jalur yang Anda berikan ke fungsi express.static relatif terhadap direktori tempat Anda meluncurkan proses simpul Anda.

Jadi untuk mempertimbangkan hal ini, Anda harus memodifikasi 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;
0
Sidney 29 Januari 2020, 03:57

Anda harus mengubah jalur Anda untuk css, karena ini akan dimuat oleh server sehingga menggunakan jalur relatif untuk server seperti di bawah ini.

Di index.js Anda

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
Juhil Somaiya 29 Januari 2020, 04:00