小编Aas*_*sai的帖子

在EJS模板中检查变量是否存在的正确方法是什么(使用ExpressJS)?

在EJS github页面上,只有一个简单的例子:https: //github.com/visionmedia/ejs

<% if (user) { %>
    <h2><%= user.name %></h2>
<% } %>
Run Code Online (Sandbox Code Playgroud)

这似乎是检查是否存在名为user的变量,如果存在,则执行一些操作.呃,对吗?

我的问题是,如果用户变量不存在,为什么Node会抛出一个ReferenceError?这使得上面的例子变得毫无用处.检查变量是否存在的合适方法是什么?我是否希望使用try/catch机制并获取ReferenceError?

ReferenceError: user is not defined
    at IncomingMessage.anonymous (eval at <anonymous> (/usr/local/lib/node/.npm/ejs/0.3.1/package/lib/ejs.js:140:12))
    at IncomingMessage.<anonymous> (/usr/local/lib/node/.npm/ejs/0.3.1/package/lib/ejs.js:142:15)
    at Object.render (/usr/local/lib/node/.npm/ejs/0.3.1/package/lib/ejs.js:177:13)
    at ServerResponse.render (/usr/local/lib/node/.npm/express/1.0.7/package/lib/express/view.js:334:22)
    at Object.<anonymous> (/Users/me/Dropbox/Projects/myproject/server.js:188:9)
    at param (/usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:146:21)
    at pass (/usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:162:10)
    at /usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:152:27
    at Object.restrict (/Users/me/Dropbox/Projects/myproject/server.js:94:5)
    at param (/usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:146:21)
Run Code Online (Sandbox Code Playgroud)

我明白我可以通过在我的服务器代码中添加一个"用户"局部变量来消除这个错误,但这里的重点是我想在运行时使用你的每天if/else来检查这些变量是否存在nullcheck类型模式.不存在的变量的例外对我来说似乎很荒谬.

ejs node.js express

106
推荐指数
6
解决办法
8万
查看次数

标签 统计

ejs ×1

express ×1

node.js ×1