javascript - JavaScript 代码中的 EJS 标签

标签 javascript jquery node.js ejs

我使用 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;
}

当用户登录时,此代码可以正常工作。但是,当没有用户登录时,该代码的计算结果为空。不是空字符串。不为空。不是未定义的。只是空的。因此,我收到以下错误

未捕获的语法错误:意外的标记,如果

当我通过 Chrome 开发工具检查时,这就是我看到的

enter image description here

(是的,我意识到缺少分号,我添加了它......当我这样做时,我得到了未捕获的语法错误:意外的标记;)

最佳答案

undefined 将原封不动地通过 JSON.stringify,并且 EJS 会将其呈现为空。如果您将其默认为 null,它将被转换为字符串 "null",EJS 将其呈现为 null

var currentUser = <%- JSON.stringify(currentUser || null) %>;

关于javascript - JavaScript 代码中的 EJS 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46964536/

相关文章:

javascript - 如何使用 javascript 中的正则表达式从 url 的参数中捕获字符串

javascript - 放大表格中居中的图像

javascript - 如何将 <td> 限制为只有三行?

javascript - 用 Twitter Bootstrap 的模式替换标准的 javascript 确认 - 谁触发了它?

node.js - Mongoose 从数组中删除子文档

node.js - promise Mongoose Connect 时出现类型错误

javascript - 在新选项卡中的组件之间传递数据

javascript - 检测何时通过 JavaScript 加载了 Marketo 嵌入表单?

node.js - nodeJs 使用 lambda AWS 返回 QUOTED 字符串而不是纯文本

javascript - a.push 不是一个函数; a.shift不是函数; a.splice 不是一个函数