Предварительная компиляция руля через nodejs не удалась на Cloud9
Я использую прекомпилятор шаблонов handlebars для экспресс ( https://github.com/diffsky/hbsc) для предварительной компиляции моих шаблонов в nodejs.
Он прекрасно работает, когда я делаю это локально, но когда я пробую это в cloud9 ide ( https://c9.io/), он работает в первый раз, а затем я получаю только исключения.
Это моя конфигурация из app.js
var hbsc = require('hbsc');
hbsc.compile({
dir: __dirname + '/views/public',
outfile: __dirname + '/public/javascripts/compiled-templates.js',
extensions: ['hbs', 'handlebars']
});
Это мой простой шаблон
<b>All users</b>
<div>
{{#each this}}
<li>{{email}}</li>
{{/each}}
</div>
И это исключение, которое я получаю
/var/lib/stickshift/5168822b4382ec505c0000ba/app-root/data/471704/views/public/listusers.handlebars:1
(function (exports, require, module, __filename, __dirname) { <b>All users</b>
^
SyntaxError: Unexpected token <
at Module._compile (module.js:437:25)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)
Если я удаляю скомпилированный файл шаблона и пытаюсь через некоторое время повторить попытку, это удается (иногда), но если я изменяю шаблон, возвращается ошибка.
Опять же, этот код отлично работает при локальном запуске, поэтому похоже, что cloud9 обрабатывает что-то по-другому.
Эта ошибка действительно озадачивает меня, так как я не вижу в ней логики. Кто-нибудь может мне помочь с каким-либо пониманием того, с чего начать поиск решения этой проблемы?
1 ответ
Это был конфликт между шаблонами руля для сервера и шаблонами на клиенте. Я использовал express3-handlebars для компиляции шаблонов для сервера, и ошибка исходила от этого компилятора, а не от клиентского.
Моим решением было переименовать шаблоны клиентов в.html. Таким образом, два компилятора, кажется, ладят.
Я до сих пор не могу объяснить, почему я никогда не получал такую же ошибку при установке моего локального nodejs.