2016-02-05 1 views
1

Я создаю редактор шаблонов на стороне клиента. В основном вы получаете половину экрана, заполненного текстовым редактором, а другая половина - окном предварительного просмотра. Содержимое из текстового редактора регистрируется в окне предварительного просмотра после того, как он был проанализирован handlebars.js, применяя некоторые переменные в этом процессе.Обнаружение ошибок синтаксического анализа/синтаксиса handlebars.js. (шаблоны на стороне клиента)

Всякий раз, когда я делаю синтаксическую ошибку, используя handlebar's expression (например, ввод {name}} вместо {{name}}), в DevTools появляется сообщение консоли. Эти сообщения могут выглядеть следующим образом:

Parse error on line 4: 
...m"><p>Hola, {{name}</p></div></body> 
---------------------^ 
Expecting 'CLOSE_RAW_BLOCK', 'CLOSE', 'CLOSE_UNESCAPED', 'OPEN_SEXPR', 'CLOSE_SEXPR', 'ID', 'OPEN_BLOCK_PARAMS', 'STRING', 'NUMBER', 'BOOLEAN', 'UNDEFINED', 'NULL', 'DATA', 'SEP', got 'INVALID' 

Я хочу, чтобы быть в состоянии обнаружить ли эта ошибки пожара или нет, и отобразить сообщение об ошибке, чтобы предупредить пользователя. Я пробовал неудачно переписать javascript Error() класс, но он бросает все виды ошибок и сбоев рулей. Есть ли способ получить доступ к этим ошибкам?

ответ

1

Вы можете поймать ошибку, а затем отобразить ее. Что-то вроде этого:

var template = Handlebars.compile('<p>Hola, {{name}</p>'); 
 
try { 
 
    template(); 
 
} catch (error) { 
 
    var encodedError = error.message.replace(/[\u00A0-\u9999<>\&]/gim, function(i) { 
 
    return '&#' + i.charCodeAt(0) + ';'; 
 
    }); 
 
    document.write('<pre>' + encodedError + '</pre>'); 
 
}
<script src="http://builds.handlebarsjs.com.s3.amazonaws.com/handlebars-v4.0.5.js"></script>

(. Кстати, here «где я заимствованные, что HTML сущности кодировку)

Смежные вопросы