Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 变量在脚本标记中不可用_Javascript_Node.js_Express_Pug - Fatal编程技术网

Javascript 变量在脚本标记中不可用

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

我正在使用passportjs在我的express应用程序上进行用户身份验证。但我遇到了一个奇怪的问题:

在我的索引路径上,我正在使用用户参数呈现index.jade模板

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,因此对象会出现语法错误。我决定只传入用户名字符串,一切正常。