2013-10-31 54 views
0

我碰到我default.html.eco佈局產生的,當我試圖呈現以下錯誤:渲染錯誤:引發RangeError:最大調用堆棧大小超出

的RangeError:最大調用堆棧大小超過

我docpad的版本是:v6.54.2,並使其具體線路是這樣的:

<%- @getBlock('scripts').add(['/vendor/foundation.min.js', 
'/vendor/audiolib.js','/vendor/freqfinder.js','/vendor/modernizr.js']).toHTML() %> 

如果我刪除,我得到一個乾淨的構建。

注意的樣式阻止它上面呈現就好:

<%- @getBlock("styles").add(['/vendor/foundation.css']).toHTML() %> 

所以我決定嘗試截斷該列表中的腳本塊和它的作品:

​​

如何任何想法解決這個問題?如果我沒有做錯什麼,我會去提出一個錯誤 - 新的docpad。

+0

我在GitHub上提交一個問題這一個。我沒有看到任何地方你的代碼從根本上做錯了什麼。 –

+1

出於好奇,是在你的實際源代碼中分成兩行嗎?你是否在單行上嘗試過? –

+0

優秀的捕獲:所有在一條線上似乎工作。我會做更多的測試,謝謝Erv。 – mcauth

回答

2

你的代碼中是否有換行符?當我從這裏複製粘貼到我的佈局文件時,它會失敗,但如果我刪除'/vendor/foundation.min.js','/vendor/audiolib.js'之間的換行符,則按預期進行編譯。

或者,你也可以.add()命令像這樣的字符串:

<%- @getBlock('scripts').add('/vendor/foundation.min.js').add('/vendor/audiolib.js').add('/vendor/freqfinder.js').add('/vendor/modernizr.js').toHTML() %> 

這也comiples對我很好。

還有一個相關說明,以防其他人遇到此錯誤但沒有任何換行符:collection.add(null)現在會導致相同的錯誤消息。所以,如果你正在做這樣的事情:

<%- @getBlock("scripts").add(@getDocument().get('scripts')).toHTML() %> 

,如果你沒有在每個頁面上scripts元數據字段就會死亡。

的修復,但是,是非常簡單的:

<%- @getBlock("scripts").add(@getDocument().get('scripts') or []).toHTML() %> 
相關問題