Предварительная компиляция Handlebars через nodejs не работает в Cloud9

Я использую прекомпилятор шаблона руля для экспресса (https://github.com/diffsky/hbsc) для предварительной компиляции мои шаблоны в nodejs.

Это прекрасно работает, когда я делаю это локально, но когда я пробую это в облаке9 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 обрабатывает что-то по-другому.

Эта ошибка меня очень озадачивает, так как я не вижу в ней никакой логики. Может ли кто-нибудь помочь мне с каким-либо пониманием того, с чего начать искать решение этой проблемы?


person Sebastian Hoffback    schedule 20.04.2013    source источник


Ответы (1)


Это был конфликт между шаблонами рулей на сервере и на клиенте. Я использовал express3-handlebars для компиляции шаблонов для сервера, и ошибка исходила от этого компилятора, а не от клиентского.

Мое решение состояло в том, чтобы вместо этого переименовать клиентские шаблоны в .html. Таким образом, два компилятора, кажется, ладят.

Я до сих пор не могу объяснить, почему у меня никогда не было такой же ошибки при локальной установке nodejs.

person Sebastian Hoffback    schedule 20.04.2013