【问题标题】:Reference error with ejs and nodejsejs 和 nodejs 的引用错误
【发布时间】:2018-05-13 19:10:57
【问题描述】:

我正在使用 EJS。我有两个嵌套的 forEach 循环,我试图比较两个数组是否具有相似的值,如果它们有,我将一个名为 condition 的变量设置为 0,如果不是,则条件仍为 1。这是必要的代码。

 <% events.forEach(function(event){ %>
       <% var condition = 1; %>
        <%  userEvents.forEach(function(userEvent){ %>
            <%  if(String(event._id) ==  String(userEvent)) condition = 0; }) %>

    <%  if(event.pointType == "Social"){ %>

变量 userEvents 和 events 是从包含路由的 app.js 文件传入的,这两个变量都可以正常工作。我得到的错误是未定义 userEvent(value inside the function)。出于某种原因,当我更改以下内容时:

 <%  if(event.pointType == "Social"){ %> 

` <%  if(true){ %>`

路线如下:

    //INDEX - show all events
app.get("/event",isLoggedIn,function(req, res) {
    var firstName = req.user.firstName;
    var lastName = req.user.lastName;
    var subcommittee = req.user.subcommittee;
    var userEvents = req.user.events; 

  Event.find({}, function(err, events){
       if(err){
           console.log(err);
       } else {
          res.render("viewEvents",{userEvents:userEvents,events:events,firstName:firstName,lastName:lastName,subcommittee:subcommittee});
       }
    });
});

代码运行,但并没有完全达到预期的行为。 这是错误消息:

    ReferenceError: /home/ubuntu/workspace/views/viewEvents.ejs:25
    23|                 <%  if(String(event._id) ==  String(userEvent)) condition = 0; }) %>
    24|         
 >> 25|         <%  if(event.pointType == "Social"){ %>
    26|               
    27|             <div class="ui clearing red raised segment">
    28|                <% if(condition == 1) { %>



        userEvent is not defined
            at eval (eval at compile (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:549:12), <anonymous>:111:69)
            at Array.forEach (native)
            at eval (eval at compile (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:549:12), <anonymous>:24:15)
            at returnedFn (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:580:17)
            at tryHandleCache (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:223:34)
            at View.exports.renderFile [as engine] (/home/ubuntu/workspace/node_modules/ejs/lib/ejs.js:437:10)
            at View.render (/home/ubuntu/workspace/node_modules/express/lib/view.js:135:8)
            at tryRender (/home/ubuntu/workspace/node_modules/express/lib/application.js:640:10)
            at EventEmitter.render (/home/ubuntu/workspace/node_modules/express/lib/application.js:592:3)
            at ServerResponse.render (/home/ubuntu/workspace/node_modules/express/lib/response.js:1008:7)
            at /home/ubuntu/workspace/app.js:197:15


 at /home/ubuntu/workspace/node_modules/mongoose/lib/model.js:4161:16
        at process.nextTick (/home/ubuntu/workspace/node_modules/mongoose/lib/services/query/completeMany.js:35:39)
        at _combinedTickCallback (internal/process/next_tick.js:73:7)
        at process._tickCallback (internal/process/next_tick.js:104:9)

我很困惑为什么错误指向第 25 行,它甚至没有使用变量 userEvent。

【问题讨论】:

  • 尝试在渲染对象上添加引号:res.render("viewEvents",{"userEvents":userEvents,"events":events,"firstName":firstName,"lastName":lastName, "分委员会":分委员会});
  • 就像我传入的变量一样?
  • 还是有同样的问题。变量确实出现在 ejs 文件中,这不是真正的问题。 forEach 中的参数的问题
  • 所以这个 userEvents.forEach(userEvents){}?
  • userEvents 数组的内容是什么?

标签: javascript node.js ejs


【解决方案1】:

尝试改变

<%  if(String(event._id) ==  String(userEvent)) condition = 0; }) %>

到:

<%  if((typeof userEvent!= "undefined" && String(event._id) ==  String(userEvent))) condition = 0; }) %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 2018-07-31
    • 2017-05-07
    • 2016-11-01
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    相关资源
    最近更新 更多