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安裝上遇到同樣的錯誤。