0

レンダリングしようとすると、default.html.eco レイアウトから次のエラーが生成されます。

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() %>

そこで、スクリプト ブロックでそのリストを切り捨ててみることにしましたが、うまくいきました。

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

これを回避する方法についてのアイデアはありますか? 何か間違ったことをしていなければ、バグを報告します - docpad の初心者です。

4

1 に答える 1

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() %>

それも私にとってはうまくコンパイルできます。

また、他の誰かがこのエラーに遭遇したが、改行がない場合に備えて、関連するメモ:collection.add(null)同じエラー メッセージが表示されるようになりました。したがって、次のようなことをしている場合:

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

scriptsすべてのページにメタデータ フィールドがなければ、それは死んでしまいます。

ただし、修正は非常に簡単です。

<%- @getBlock("scripts").add( @getDocument().get('scripts') or [] ).toHTML() %>
于 2013-11-01T04:31:35.157 に答える