#css #node.js #reactjs #server #webpack
#css #node.js #reactjs #сервер #webpack
Вопрос:
Я использую react / webpack для запуска сервера разработки на локальном 8080. Это то, что я еще не совсем понимаю, и я сталкивался с этой проблемой раньше. Bootstrap связан в HTML и работает нормально. Однако, когда я связываю таблицу стилей, консоль выдает мне ошибку 404 not found для моей таблицы стилей.
Вот мой шаблон HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Weather App</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
<link rel="stylesheet" href="public/stylesheet.css" />
</head>
<body>
<div id="root">
</div>
</body>
</html>
Index.html и Index.js находятся на корневом уровне, как и каталог /Public, который содержит только один файл: stylesheet.css.
Почему stylesheet.css не загружается в браузере при запуске локального сервера и как мне это исправить? Спасибо.
Комментарии:
1. вы пробовали
Public/stylesheet.css
? (заглавная P) — некоторые серверы (просматривающие ваш IIS) чувствительны к регистру2. Спасибо! Я уже пробовал public раньше, как вы можете видеть в примере выше, однако общедоступный каталог не был в ИСТИННОМ корне проекта. Это было внутри каталога приложения. Я переместил общедоступный каталог на один уровень выше, к истинному корню (с конфигурациями webpack и модулями узла), и это сработало!
3. Есть ли причина, по которой это работает, кстати? Браузер просто ожидает, что общая папка будет находиться в самом настоящем корневом каталоге?
4.Я не уверен во внутренней работе webpack, но браузер ничего не «ожидает». Браузер ищет файл там, где вы говорите, что он найден; в данном случае:
<application_root>/public/stylesheet.css
или в расположении удаленного сервера, например:https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css
— обновлено:public
в этом случае определяется как каталог того же уровня, что иhtml
файл.
Ответ №1:
если вы предоставляете общий доступ к папке с Express вот так
app.use(express.static(path.join(__dirname, 'public')));
тогда вам не нужно указывать ‘public’ в исходном коде.
другими словами, это
<link rel="stylesheet" href="public/stylesheet.css" />
должно быть это
<link rel="stylesheet" href="/stylesheet.css" />