Как обслуживать статические файлы по разным маршрутам в Express? - PullRequest
1 голос
/ 25 апреля 2019

Я создаю сайт с помощью Express, и когда я пытаюсь использовать маршруты глубиной более одного уровня, ни один из моих статических файлов не обрабатывается. Например, вот мой код, который работает правильно:

const express = require('express')
const app = express()
const port = 3000


app.use('/public', express.static(__dirname + '/public'))

app.get('/newSite', (req, res) => res.sendFile(__dirname + '/newSite.html') )

app.get('/organizations', (req, res) => res.sendFile(__dirname + '/organizations.html') )

app.listen(port, () => console.log(`listening on port ${port}!`))

Я хотел использовать что-то вроде этого для пути:

app.get('/admin/organizations', (req, res) => res.sendFile(__dirname + '/organizations.html') )

Я пытался возиться с функцией app.use, потому что я думаю, что именно в этом и заключается моя проблема, но я до сих пор не смог ее разгадать. Как мне передать статические файлы на любой маршрут?

Редактировать: вот соответствующий HTML

<html>
<head>


<link rel="stylesheet" type = "text/css" href = "./public/global.css"/>
<link rel="stylesheet" type = "text/css" href = "./public/organizations.css"/>

</head>
<body>

</body>

<script src = "public/jquery.js"> </script>

<script src = "public/organizations.js"> </script>

</html>

1 Ответ

2 голосов
/ 25 апреля 2019

Это связано с relative path.С express безопаснее использовать absolute путь.

После того, как ваш маршрут пройдет один уровень глубоко , отправляемый html-файл должен искать один уровень up , чтобы найти статические файлы.(Вы можете подтвердить: ../public/global.css будет правильно связывать статические файлы на вашем маршруте /admin/organizations)

Простое исправление: использовать абсолютный путь (обратите внимание, что он начинается только с /)

<link rel="stylesheet" type = "text/css" href = "/public/global.css"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...