Я не могу использовать макет 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>
Другие вопросы по тегам