木口と申します。
よろしくお願い致します。
ejsテンプレートデバックについて質問させてください。
ejsの書きぶりで苦労しております。
HPを参考にヘルパー(ejs_fulljslint.js)を入れてテンプレートを記述していますが
エラーの行番号が正しく出力されないケースがあり詰まり気味です。
「%」と「=」の間に不要なスペースが有る場合([% = test %])
controller.js
var list ={"hoge" : {"key1":"value1", "key2":"value2"}, "hige" : {"key1":"value1", "key2":"value2"} };
this.view.update('#list', 'list', { startStr:"START--", list: list, endStr:"END--"});
list.ejs
<script type="text/ejs" id="list">
[%= startStr %] <!-- ① -->
<br/>
[% $.each(list, function(key, val) { %]
key:[%= key %] <!-- ② -->
[% for(key in val) { %]
[%= key %][%= val[key] %] <!-- ③ -->
[% } %]
<br/>
[% }); %]
<br/>
[%= endStr %] <!-- ④ -->
</script>
①で不要なスペースが有る場合は、期待通りのメッセージ(下記)が表示されました。
[WARN]16:36:47,520: テンプレートのコンパイルでエラーが発生しました。
構文エラー: line:1 Expected an identifier and instead saw '='.(code=7010)
②③のループ内で不要なスペースが有る場合は、以下のようなメッセージが表示されました。
[WARN]16:21:31,12: テンプレートのコンパイルでエラーが発生しました。
構文エラー: line:4 Control character in string: .(code=7010)
#③でもline4と表示される。(ループ内の処理が大きいとデバックしづらい。)
#①とエラーが異なる。
④の一旦ループを通った後に、不要なスペースが有る場合は②③と同様のメッセージが表示されました。
[WARN]16:38:55,613: テンプレートのコンパイルでエラーが発生しました。
構文エラー: line:4 Control character in string: .(code=7010)
ループ内、ループを通った後のエラー行番号が正しく出力されないと思うのですがどうでしょうか?