无法读取 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.content
在posts.forEach()
循环中是undefined
。尝试登录post
并查看其内容。
【讨论】:
以上是关于无法读取 ejs 中未定义的属性“子字符串”的主要内容,如果未能解决你的问题,请参考以下文章
我该如何解决这个问题:未捕获的类型错误:无法读取 javascript 中未定义的属性“toString”
无法读取未定义的属性“名称” - mongoose、express、nodeJS、ejs