Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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 特快专递及;jade(node.js)-检查是否存在时未定义变量错误_Javascript_Node.js_View_Pug - Fatal编程技术网

Javascript 特快专递及;jade(node.js)-检查是否存在时未定义变量错误

Javascript 特快专递及;jade(node.js)-检查是否存在时未定义变量错误,javascript,node.js,view,pug,Javascript,Node.js,View,Pug,我在一个非常简单的express应用程序上遇到了一个相当愚蠢的错误。我使用jade作为视图引擎,我这样说只是为了防止它与问题相关 我试图检查是否定义了一个变量以呈现一件事或另一件事,但简单地检查该变量会触发“变量未定义”错误。这不是我期望的行为,所以我想知道我是否做错了什么。这是我正在使用的视图代码: h1= title - if (user) p Welcome to #{title}, #{user.username} - else p Welcome to #{title

我在一个非常简单的express应用程序上遇到了一个相当愚蠢的错误。我使用jade作为视图引擎,我这样说只是为了防止它与问题相关

我试图检查是否定义了一个变量以呈现一件事或另一件事,但简单地检查该变量会触发“变量未定义”错误。这不是我期望的行为,所以我想知道我是否做错了什么。这是我正在使用的视图代码:

h1= title
- if (user)
    p Welcome to #{title}, #{user.username}
- else 
    p Welcome to #{title}
正确的方法是什么?必须有一种方法来检查视图上的变量:-/

编辑:忘了说错误是在哪一行触发的,它是在第二行“-if(user)”触发的。

您没有附上
p欢迎来到#{title}#{user.username}
加引号

试一试


正如Jade文档的另一部分所提到的,
locals
变量是如何将数据传递给Jade模板的。在百灵鸟中,我在jade模板中用
locals
预先添加了变量。这正确地绕过了错误

因此,以下Jade模板应该可以解决您的错误:

h1= title
- if (locals.user)
    p Welcome to #{title}, #{user.username}
- else 
    p Welcome to #{title}
杰德

# the following function is a safe getter/setter for locals
- function pagevar(key, value) { var undef; return (value===undef) ? locals[key] || null : locals[key] = value; }
block config
  #intended as a non-rendered block so that locals can be overridden.
  # put your defaults here... - use append in the child view
!!!
html
  head
    title=pagevar('title')
    meta(name='description',content=pagevar('description'))
...
杰德

append config
  - locals.title = 'override';
  - locals.description = 'override 2';
  - pagevars('somekey', 'some value');
...

轻松愉快。

这确实有效,谢谢!。尽管如此,我仍然认为简单的检查应该有效,它更干净:-(。
append config
  - locals.title = 'override';
  - locals.description = 'override 2';
  - pagevars('somekey', 'some value');
...