CNode

新手请教一个koa2使用ejs的问题。

问答
Mmofanjun发布于9 年前最后回复9 年前4 回复3637 浏览0 收藏

我使用了koa-views中间件,在ejs文件中有如下代码 <% if (user) { %> <%= user.name %> <% } %> 若在js文件中加入如下代码则编译通过: ctx.state.user = {} 如果不使用该语句,则会爆出user未定义的错误(user is not defined)。 请问如何解决在不给ctx.state赋值的情况下,能编译通过。

查看回复

回复 (4)

S
steambap#1·9 年前

你的判断一下吧,例如: user ? user.name : 'unnamed'

H
hezhongfeng#2·9 年前
引用 mofanjun@hezhongfeng 感谢你的回答,对于未声明的变量和声明却没有赋值的变量都属于undefined类型,但是if在使用前者时仍然会报错(chrome报Uncaught ReferenceE...

@mofanjun 我都说了,你别用if去判断 让你用typeof,例子也给你了 这个坑我也踩过,所以才知道的比较详细

H
hezhongfeng#3·9 年前

你这个判断的语句就不行

typeof(user) !== 'undefined'

注意嵌套的变量要一层一层验证,例如先验证user,然后再验证user.name

M
mofanjun#4·9 年前
引用 hezhongfeng你这个判断的语句就不行 注意嵌套的变量要一层一层验证,例如先验证user,然后再验证user.name

@hezhongfeng 感谢你的回答,对于未声明的变量和声明却没有赋值的变量都属于undefined类型,但是if在使用前者时仍然会报错(chrome报Uncaught ReferenceError); 谢谢。

参与回复
登录后即可参与回复。登录