Передать скрипт src в шаблон Pug - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь получить шаблон Pug для рендеринга скрипта с использованием Express.Моя файловая структура выглядит следующим образом:

views
    public
        index.jade
        main.js

index.js

Я попытался передать имя сценария в качестве аргумента res.render('public/index', { bundle: '/main.js' }), но безуспешно.

Содержимое моего index.js:

const app = express();

app.set('view engine', 'jade');

app.use(express.static(path.join(__dirname, 'views/public')));

app.use('*', (req, res, next) => {
    res.render('public/index', { bundle: '/main.js' });
});

Содержимое моего index.jade:

doctype html
html
    head
        title SSR React
    body
        div#root
        script(src='#{bundle}')

Я получаю странную ошибку в консоли.Имя скрипта проходит, но я получаю сообщение об ошибке

Uncaught SyntaxError: Неожиданный токен <</p>

Содержимое main.js при просмотреКонсоль выглядит следующим образом:

<!DOCTYPE html><html><head><title>SSR React</title></head><body><div id="root"></div><script src="/main.js"></script></body></html>

Итак, просто уменьшенный HTML-код, передаваемый из Pug.

Может кто-нибудь пролить здесь немного света?Я неправильно настраиваю Express?Спасибо.

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Я не знаю Джейд, но у вас все в порядке с Экспрессом.Из отрисованного HTML вы можете видеть, что Express передает правильное значение в ваш шаблон, то есть '/main.js'.Вы также знаете, что пакетный файл обслуживается, поскольку вы видите его в devtools в разделе «sources».Ошибка, которую вы видите, почти наверняка является проблемой с вашим переданным / связанным кодом React.Смотрите ReactJS: неожиданный токен '<' </a>, чтобы узнать о некоторых шагах, которые вы можете попробовать.

0 голосов
/ 05 июля 2019

При написании встроенного JavaScript в шаблоне Jade вам нужно добавить точку после тега script. Также вы должны сделать отступ для вашего кода.

Например, включить внешние JS, такие как:

script(type='text/javascript', src='/socket.io/socket.io.js')

Встроенные js как:

script(type='text/javascript').
...