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

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


类型错误: 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|       <% })%>

无法在数组的 eval 处读取未定义的属性“substr”(编译时的 eval (C:\Users\shruti\Desktop\ejs-challenge\node_modules\ejs\lib\ejs.js:618:12),:22:39) .forEach () at eval (eval atcompile (C:\Users\shruti\Desktop\ejs-challenge\node_modules\ejs\lib\ejs.js:618:12), :16:14) at returnedFn (C:\用户\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:\用户\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-挑战\node_modules\mongoose\lib\query.js:4397:11js: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-

慕标琳琳
浏览 117回答 4
4回答

开满天机

错误消息显示“无法读取”'substr'的undefined属性,这意味着post.content它位于循环undefined内posts.forEach()。尝试记录post并检查其内容。

牛魔王的故事

您的数据库中可能有空post.content值,当 forEach 循环检索它们时,函数无法读取“未定义”的属性,意味着空值。搜索数据库以找到此空/空内容字段并更新或删除它们。

Qyouu

要解决此问题,您必须删除 MongoDB BlogDB 表。发生此问题的原因是第一行/寄存器上有一个未定义的变量 (post.content)。

青春有我

我解决了你的问题,最简单的解决方案是将括号放在 post.content 之间并以这种方式构建它:<%=&nbsp;(post.content).substr(0,&nbsp;100)&nbsp;%>我自己尝试过,它有效,享受学习
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript