尝试捕获从res.render传入的变量

时间:2019-06-20 17:43:42

标签: javascript try-catch ejs

我正在ejs网页上的script标签内执行try catch块。

我的服务器有时使用令牌和用户来呈现页面,有时不使用。每次传递变量时,我都会执行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 :(得分:0)

您不能使用try/catch来检测语法错误。

相反,您可以提供一个默认值,以防未设置变量。

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

答案 1 :(得分:0)

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");

}