Попробуйте перехватить переменную, переданную из res.render - PullRequest
0 голосов
/ 20 июня 2019

Я выполняю блок try catch в теге script на моей веб-странице ejs.

Мой сервер отображает страницу иногда с токеном & user, а иногда без.Каждый раз, когда я проходил через переменную, я делал var x = <%- JSON.stringify(x) %>;.На этот раз я сделал это, так как ничего не было передано, это дало мне ошибку.

Это не проблема.Проблема, с которой я сталкиваюсь, состоит в том, что это, кажется, не работает!См. Код ниже:

try {
            var Token = <%- JSON.stringify(Token) %>;
            var User = <%- JSON.stringify(User) %>;
        }
        catch(err){
            console.log("there is no token/user");
        }

Я хочу, чтобы мой код попытался инициализировать эти переменные, если они были переданы из функции res.render с сервера.Если они не были переданы, нет проблем, просто продолжайте.

Ответы [ 2 ]

0 голосов
/ 21 июня 2019
var tokenexist = false;
var userexist = false;


 <% if (Token) {
    tokenexist = true;

}
if (User) {
    userexist = true;
} %>


if (userexist && tokenexist) {
    var Token = '<% - JSON.stringify(Token) %>';
    var User = '<% - JSON.stringify(User) %>';

} else {
    console.log("there is no token/user");

}
0 голосов
/ 20 июня 2019

Вы не можете использовать try/catch для обнаружения синтаксической ошибки.

Вместо этого вы можете указать значение по умолчанию, если переменные не установлены.

var Token = <%- JSON.stringify(Token || "") %>;
var User = <%- JSON.stringify(User || "") %>;
if (Token == "" || User == "") {
  console.log("there is no token/user");
}
...