Riot.js тег compiler / 404 не найден

#javascript #express #riot.js #pug

#javascript #выразить #riot.js #pug

Вопрос:

Я пытаюсь включить riot.js добавьте теги в мой проект, чтобы я мог повторно использовать компоненты. Приложение работает на Node Express и использует Pug для создания шаблонов.

У меня есть маршрут, который отображает следующую страницу:

 include includes/header.pug
link(rel="stylesheet" href="/styles/kaljasakot.css" type="text/css")
body(id='bootstrap-override')
    div(class='container-fluid')
        div(class='header')
            img(class='okklogo' src='img/okkimg.jpeg' height='80' width='130')
            h1 Kaljasakot
    kaljasakot
    script(type="riot/tag" src="kaljasakot.tag")
    script(src="https://cdn.jsdelivr.net/riot/2.6/riot compiler.min.js")
    script riot.mount('kaljasakot')
    include includes/footer.pug
    script(src='/js/kaljasakot.js') 
  

Т.е. я пытаюсь смонтировать тег riot kaljasakot в шаблоне Pug. Однако браузер выдает ошибку 404 в консоли при рендеринге страницы:

ПОЛУЧИТЬ http://localhost:3001/kaljasakot.tag 404 (Не найден) riot compiler.min.js: 2

Я немного озадачен тем, где должен находиться файл тега, чтобы компилятор мог его найти, и я не могу найти никаких советов по этому поводу в Google. Кто-нибудь сталкивался с этим случаем?

Весь проект можно найти здесь, ссылка на Github, если это необходимо.

Ответ №1:

Файлы тегов извлекаются не при компиляции шаблона Pug, а из браузера при запуске приложения. В настоящее время вы не указали Express, где найти файлы тегов.

Чтобы исправить эту проблему, вы можете, например, создать папку public/tags , переместить туда файлы тегов и использовать их как script(type="riot/tag" src="tags/kaljasakot.tag") . Express найдет файлы оттуда, потому что вы настроили public папку как источник для статических файлов.

Теперь запрос больше не будет выдавать 404, но файл тегов также не будет работать. Поскольку вы используете Pug в файлах тегов, вам необходимо предварительно скомпилировать их, прежде чем приложение сможет их использовать. Если вы просто отбросите kaljasakot.тег для общей папки как было предложено выше, вы увидите ошибку Uncaught SyntaxError: Unexpected token = , потому что Riot не понимает синтаксис Pug.

Поэтому вы, вероятно, захотите просто сохранить файлы тегов в views папке в конце концов и настроить этап сборки, на котором вы компилируете теги и перемещаете их в public/tags папку. См. Документацию Riot по компиляции сервера и gulp-riot, например.

Комментарии:

1. Понятно, спасибо! Я даже не читал документы предварительной компиляции до вашего совета, это сработало.