无法读取 ejs 中未定义的属性“子字符串”

Posted

技术标签:

【中文标题】无法读取 ejs 中未定义的属性“子字符串”【英文标题】:Cannot read property 'substring' of undefined in ejs 【发布时间】:2021-03-12 04:36:55 【问题描述】:

当我尝试向我的网站添加新博客文章时,我不断收到此错误:

类型错误:C:\Users\shruti\Desktop\ejs-challenge\views\home.ejs:15 13|

14|       <p>

15|         <%= post.content.substr(0, 100) %>

16|         <a href="/posts/<%=post._id%>">Read More</a>

17|       </p>

18|       <% )%>

无法读取未定义的属性“substr” 在 eval(编译时的 eval (C:\Users\shruti\Desktop\ejs-challenge\node_modules\ejs\lib\ejs.js:618:12), :22:39) 在 Array.forEach () 在 eval(编译时的 eval (C:\Users\shruti\Desktop\ejs-challenge\node_modules\ejs\lib\ejs.js:618:12), :16:14) 在返回Fn (C:\Users\shruti\Desktop\ejs-challenge\node_modules\ejs\lib\ejs.js:653:17) 在 tryHandleCache (C:\Users\shruti\Desktop\ejs-challenge\node_modules\ejs\lib\ejs.js:251:36) 在 View.exports.renderFile [作为引擎] (C:\Users\shruti\Desktop\ejs-challenge\node_modules\ejs\lib\ejs.js:482:10) 在 View.render (C:\Users\shruti\Desktop\ejs-challenge\node_modules\express\lib\view.js:135:8) 在 tryRender (C:\Users\shruti\Desktop\ejs-challenge\node_modules\express\lib\application.js:640:10) 在 Function.render (C:\Users\shruti\Desktop\ejs-challenge\node_modules\express\lib\application.js:592:3) 在 ServerResponse.render (C:\Users\shruti\Desktop\ejs-challenge\node_modules\express\lib\response.js:1008:7) 在 C:\Users\shruti\Desktop\ejs-challenge\app.js:35:9 在 C:\Users\shruti\Desktop\ejs-challenge\node_modules\mongoose\lib\model.js:4846:16 在 C:\Users\shruti\Desktop\ejs-challenge\node_modules\mongoose\lib\model.js:4846:16 在 C:\Users\shruti\Desktop\ejs-challenge\node_modules\mongoose\lib\helpers\promiseOrCallback.js:24:16 在 C:\Users\shruti\Desktop\ejs-challenge\node_modules\mongoose\lib\model.js:4869:21 在 C:\Users\shruti\Desktop\ejs-challenge\node_modules\mongoose\lib\query.js:4397:11

home.ejs:

<%- include("partials/header") -%>

    <h1>HOME</h1>
    <p> <%= startingContent %> </p>

    <% console.log(posts); %>

    <div class="">
      <% posts.forEach(function(post) %>
      <h1><%= post.title%></h1>

      <p>
        <%= post.content.substr(0, 100) %>
        <a href="/posts/<%=post._id%>">Read More</a>
      </p>
      <% )%>


        <form  action="/compose">
           <button class="btn btn-primary" type="compose" name="button">COMPOSE</button>
        </form>

    </div>


    <%- include("partials/footer") -%>

【问题讨论】:

这能回答你的问题吗? How to set character limits in content in ejs template 【参考方案1】:

错误消息显示它“无法读取undefined 的属性'substr',这意味着post.contentposts.forEach() 循环中是undefined。尝试登录post并查看其内容。

【讨论】:

以上是关于无法读取 ejs 中未定义的属性“子字符串”的主要内容,如果未能解决你的问题,请参考以下文章

我该如何解决这个问题:未捕获的类型错误:无法读取 javascript 中未定义的属性“toString”

无法读取未定义的属性“名称” - mongoose、express、nodeJS、ejs

TypeError:无法读取反应js中未定义的属性'fn'

如何修复'TypeError:无法读取 Javascript 中未定义的属性'标题'

无法读取主干中未定义的属性“长度”

骨干无法读取骨干视图中未定义错误的属性“属性”