为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕标琳琳 2023-09-21 14:14:02
当我尝试向我的网站添加新的博客文章时,我不断收到此错误:类型错误: 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-
查看完整描述

4 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

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



查看完整回答
反对 回复 2023-09-21
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

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



查看完整回答
反对 回复 2023-09-21
?
Qyouu

TA贡献1786条经验 获得超11个赞

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


查看完整回答
反对 回复 2023-09-21
?
青春有我

TA贡献1784条经验 获得超8个赞

我解决了你的问题,最简单的解决方案是将括号放在 post.content 之间并以这种方式构建它:

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

我自己尝试过,它有效,享受学习


查看完整回答
反对 回复 2023-09-21
  • 4 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信