Если вы укажете относительный URL-адрес, например:
href="stylesheets/header.css"
, браузер добавит путь к веб-странице, на которой вы находитесь, и запросит этот объединенный путь с вашего сервера. Если ваша веб-страница не находится на верхнем уровне вашего веб-сайта и, следовательно, не имеет пути, она не будет работать должным образом. Я хочу подчеркнуть, что это делает браузер, а не Express. Таким образом, если вы находитесь на веб-странице с этим URL:
http://localhost:3000/account/login
И браузер увидит:
<link rel="stylesheet" type="text/css" href="stylesheets/header.css">
В итоге будет объединен путь веб-страницы
/account/login
с относительным URL-адресом, указанным в теге <link>
, и, как вы узнали, он запросит:
/account/login/stylesheets/header.css
Когда express.static()
увидит этот URL-адрес, это ничего не соответствует вашей иерархии каталогов
__dirname + "/public"
, поэтому она не будет найдена.
Вместо этого вы хотите указать ведущий sla sh:
<link rel="stylesheet" type="text/css" href="/stylesheets/header.css">
Это говорит браузеру не добавлять какой-либо путь к URL, и он отправляет запрос на ваш сервер для:
/stylesheets/header.css
Когда express.static()
получает этот запрос, он объединяет его с
__dirname + "/public"
и в итоге будет искать файл
__dirname + "/public" + "/stylesheets/header.css"`
, который будет найден в вашей иерархии каталогов publi c и будет работать.