Я создаю сайт с помощью 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.info(`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>
Я пытался, и это не сработало. Он также перестал обслуживать статические файлы для моей страницы «newSite» после изменения.
не могли бы вы опубликовать образец html-страницы, как вы связали
Конечно, это там сейчас





Это связано с relative путем. С express это безопаснее для использования пути absolute.
После того, как ваш маршрут перейдет на один уровень глубокий, отправляемый html-файл должен выполнить поиск на одном уровне вверх, чтобы найти статические файлы. (Вы можете подтвердить: ../public/global.css действительно правильно свяжет статические файлы в вашем маршруте /admin/organizations)
Простое исправление: используйте абсолютный путь (обратите внимание, что он начинается только с /)
<link rel = "stylesheet" type = "text/css" href = "/public/global.css"/>
Попробуйте
app.use('/public(/*)?', express.static(__dirname + '/public')). Это работает?