Добавление CSS на hapi.js не работает

Используя плагин инертный, я попытался добавить общую папку, в которой хранил свои файлы css, js. Но в моей папке Просмотры я не могу получить к ним доступ. Я использую руль. Даже если я оставлю только стиль.css в папке Просмотры, HTML не сможет получить доступ к этому файлу стиля.

Это моя структура папок:

app.js
public
   css
     style.css
 views
     home.html
 routes
     user.js

App.js

const server = hapi.server({
   port: Number(process.argv[2] || 3000),
});
const init = async () => {

   await server.register(vision);
   await server.register(inert);
   server.views({
        engines: {
            html: handlebars
        },
        path: path.join(__dirname, 'views'),
        relativeTo: path.join(__dirname, 'public')

    });

}

Я попытался добавить относительный путь также на сервер следующим образом:

const server = hapi.server({
   port: Number(process.argv[2] || 3000),
   routes: {
        files: {
            relativeTo: Path.join(__dirname, 'public')
       }
   }
});

Но тщетно.

Главная.html

<html>
<head>
   <title>Login page</title>
   <link rel = "stylesheet" href = "../css/style.css" />
 </head>
   <body>
        <h2> Welcome </h2>
  </body>
</html>

стиль.css

body {
background: #456;
font-family: 'Open Sans', sans-serif;
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
401
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны определить маршрут для обслуживания содержимого вашей общей папки.

Это можно сделать с помощью Обработчик каталогов:

const init = async () => {
    await server.register(vision);
    await server.register(inert);

    server.views(...)

    server.route({
        method: 'GET',
        path: '/public/{param*}',
        handler: {
            directory: {
                path: path.join(__dirname, 'public')
            }
        }
    })
}

Это создаст маршрут, который будет обслуживать любой контент в каталоге public, поэтому ваш css будет доступен через http://локальный: 3000/public/css/style.css.

Это означает, что вам не нужно обращаться к таблице стилей по относительному пути, и вы можете использовать абсолютный путь в своем home.html:

<link rel = "stylesheet" href = "/public/css/style.css" />

это сработало спасибо. Но что, если вместо сохранения этого маршрута в файле app.js я хочу сохранить его в папке маршруты в файле user.js? для этого мне нужно изменить свою html-ссылку на href = "../public/css/style.css"? Я пытался, но это не сработало. Я изменил структуру папок. Пожалуйста, посмотрите

user9762426 17.03.2019 11:34

Маршрут, который обслуживает статический контент, в основном не имеет отношения к вашим файлам шаблонов, на самом деле директива routes.files.relativeTo только говорит hapi использовать предоставленный вами путь, поэтому при вызове h.view в обработчике маршрута путь будет разрешен из relativeTo, так что это только полезно внутри сервера, а не от клиента (например, представления). Что делает ваш файл user.js?

felixyadomi 17.03.2019 12:16
user.js содержит все мои server.routes, т.е. return h.view('home') files. Я экспортировал их для использования на app.js. Ну, я понял это, изменив путь к каталогу на path.join(__dirname, ../'public')
user9762426 17.03.2019 14:10

Другие вопросы по теме