1

我正在使用handlebars模板预编译器进行表达(https://github.com/diffsky/hbsc),以便在nodejs中预编译我的模板。通过nodejs的手柄预编译在Cloud9上失败

它工作的很好,当我做它本地但是当我尝试它在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) 

如果我删除异常编译好的模板文件,并在一段时间后再次尝试,它会成功(有时),但如果我更改模板的错误返回纳秒。

再一次,这段代码在运行localy时运行得非常好,所以看起来像cloud9处理不同的事情。

这个错误真的使我感到困惑,因为我发现它没有逻辑。任何人都可以帮助我了解从哪里开始着手解决这个问题?

回答

0

这是服务器的句柄模板和客户端上的句柄模板之间的冲突。我使用express3句柄编译服务器的模板,错误来自该编译器,而不是基于客户端的编译器。

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

我仍然无法解释为什么我从未在我的本地nodejs安装上遇到同样的错误。