Я не могу использовать макет EJS с помощью res.render()
Я пытался использовать модуль express-ejs-layouts. Когда я пробую второй маршрут, браузер находит мои файлы ресурсов JS и CSS под моими вторыми файлами EJS, которые были записаны мной в функцию второго маршрута.
Что я должен делать?
Мое расположение правильно отображается с моим первым процессом маршрута, как показано ниже.
мой первый маршрут;
app.get('/', function(req, res) {
res.render('home/index');
});
мой файл layout.ejs;
<!DOCTYPE html>
<html lang="tr">
<head>
<link rel="stylesheet" href="bootstrap/css/bootstrap.css">
<link rel="stylesheet" href="css/styles.css">
</head>
<body>
<% include navbar %>
<%- body %>
<script src="js/jquery.js"></script>
<script src="bootstrap/js/bootstrap.js"></script>
</body>
</html>
Пока все хорошо. Мои файлы ресурсов (css и js) связаны между собой, и я правильно вижу свой home/index.ejs. И тогда я пробую свой второй маршрут, как показано ниже;
мой второй маршрут;
app.get('/user/:id', function(req, res) {
res.render('user/index');
});
Моя консоль браузера выдает следующие ошибки;
Failed to load resource: the server responded with a status of 404
(Not Found) http://localhost:1337/user/bootstrap/css/bootstrap.css
Failed to load resource: the server responded with a status of 404
(Not Found) http://localhost:1337/user/css/styles.css
Failed to load resource: the server responded with a status of 404
(Not Found) http://localhost:1337/user/js/jquery.js
Failed to load resource: the server responded with a status of 404
(Not Found) http://localhost:1337/user/bootstrap/js/bootstrap.js
1 ответ
Express требуется общедоступная именованная папка для проверки ресурсов. Поэтому я поместил мои файлы ресурсов в папку ".../public/", переписал ссылку src, и я добился успеха.
Я определил новый статический путь;
app.use(express.static(__dirname + '/public'));
Затем я изменил свой новый файл layout.ejs, как показано ниже;
<!DOCTYPE html>
<html lang="tr">
<head>
<link rel="stylesheet" href="/css/bootstrap.css">
<link rel="stylesheet" href="/css/styles.css">
</head>
<body>
<% include navbar %>
<%- body %>
<script src="/js/jquery.js"></script>
<script src="/js/bootstrap.js"></script>
</body>
</html>