我使用Node.js和ejs来模板化语言。
我觉得这真的很傻,我应该能够解决它,但我被困住了。
我在使用以下功能时遇到问题:
// Returns true if campground has been posted by currently logged on user
// If no user logged on, returns false
function checkIfCampgroundBelongsToUser(campgroundAuthorID) {
var currentUser = <%-JSON.stringify(currentUser) %>
if(currentUser && currentUser._id === campgroundAuthorID) {
return true;
}
return false;
}
当用户登录时,此代码可以正常工作。但是,当没有用户登录时,评估为空。不是空字符串。不是空的。没有定义。只是空的。因此,我收到以下错误
未捕获的SyntaxError:如果
,则出现意外的令牌当我通过chrome dev工具进行检查时,这就是我所看到的
(是的,我意识到缺少一个分号,我添加了它...当我这样做时,我得到了未被捕获的语法错误:意外的令牌;)
答案 0 :(得分:1)
undefined
将通过JSON.stringify
不变,EJS会将其视为无效。如果您将其默认为null
,则会将其转换为字符串"null"
,EJS将将其呈现为null
。
var currentUser = <%- JSON.stringify(currentUser || null) %>;