通过nodejs的Handlebars预编译在Cloud9上失败



我使用车把模板预编译器为express (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处理的东西不同。

这个错误真的使我困惑,因为我发现它没有任何逻辑。谁能告诉我从哪里开始解决这个问题?

服务器的车把模板和客户端的车把模板之间存在冲突。我使用express3-handlebars为服务器编译模板,错误来自该编译器,而不是基于客户端的编译器。

我的解决方案是将客户端模板重命名为。html。这样,两个编译器似乎相处得很好。

我仍然不能解释为什么我从来没有得到相同的错误在我的本地nodejs安装虽然

相关内容

  • 没有找到相关文章

最新更新