Javascript 变量在脚本标记中不可用
我正在使用passportjs在我的express应用程序上进行用户身份验证。但我遇到了一个奇怪的问题: 在我的索引路径上,我正在使用用户参数呈现index.jade模板Javascript 变量在脚本标记中不可用,javascript,node.js,express,pug,Javascript,Node.js,Express,Pug,我正在使用passportjs在我的express应用程序上进行用户身份验证。但我遇到了一个奇怪的问题: 在我的索引路径上,我正在使用用户参数呈现index.jade模板 router.get('/', function(req, res, next) { res.render('index', { user: req.user }); }); 现在在我的翡翠模板中,我有以下内容 block content if user h1 logged in #{user} sc
router.get('/', function(req, res, next) {
res.render('index', { user: req.user });
});
现在在我的翡翠模板中,我有以下内容
block content
if user
h1 logged in #{user}
script var shared_resources.user = user
if !user
h1 Not logged in
出于某种原因,该用户中的条件传递是存在的。当我在logged-in{user}中打印出用户对象时,它会很好地打印出详细信息。但是在脚本标记中,我得到了一个未捕获的引用,用户未定义。有人知道为什么会发生这种情况吗?您还需要在scrip标记中使用模板字符串
script var shared_resources.user = "#{user}"
如果您想嵌入对象,可以尝试以下操作
script var shared_resources.user = !{JSON.stringify(user).replace(/<\//g, '<\\/')}
script var shared_resources.user=!{JSON.stringify(user).replace(/Okay)可以工作,但是当用户是一个对象时,我遇到了额外的问题。看起来jade没有正确解析JSON,因此对象会出现语法错误。我决定只传入用户名字符串,一切正常。