我使用车把模板预编译器为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安装虽然