posts is not defined,怎么解决呢?
发布于 10 年前 作者 wangxuq 7722 次浏览 最后一次编辑是 8 年前

错误如下: 500 ReferenceError: E:\nodejs\lianxi\microblog\views\index.ejs:1<br/> >> 1| <%if(!user){%> <br/> 2| <div class=“hero-unit”> <br/> 3| <h1>歡迎來到 Microblog</h1> <br/> 4| <p>Microblog 是一個基於 Node.js 的微博系統。</p> <br/><br/>posts is not defined

1| <%if(!user){%> 2| 3| 歡迎來到 Microblog 4| Microblog 是一個基於 Node.js 的微博系統。 posts is not defined at eval (eval at (E:\nodejs\lianxi\microblog\node_modules\ejs\lib\ejs.js:242:14), :32:32) at eval (eval at (E:\nodejs\lianxi\microblog\node_modules\ejs\lib\ejs.js:242:14), :35:23) at eval (eval at (E:\nodejs\lianxi\microblog\node_modules\ejs\lib\ejs.js:242:14), :35:630) at E:\nodejs\lianxi\microblog\node_modules\ejs\lib\ejs.js:255:15 at Object.exports.render (E:\nodejs\lianxi\microblog\node_modules\ejs\lib\ejs.js:293:13) at View.exports.renderFile [as engine] (E:\nodejs\lianxi\microblog\node_modules\ejs\lib\ejs.js:323:20) at View.render (E:\nodejs\lianxi\microblog\node_modules\express\lib\view.js:76:8) at Function.app.render (E:\nodejs\lianxi\microblog\node_modules\express\lib\application.js:504:10) at ServerResponse.res.render [as partial] (E:\nodejs\lianxi\microblog\node_modules\express\lib\response.js:798:7) at ServerResponse.res.render (E:\nodejs\lianxi\microblog\node_modules\express-partials\index.js:58:9)

index.ejs代码如下: <%if(!user){%> <div class=“hero-unit”> <h1>歡迎來到 Microblog</h1> <p>Microblog 是一個基於 Node.js 的微博系統。</p> <p> <a class=“btn btn-primary btn-large” href="/login">登錄</a> <a class=“btn btn-large” href="/reg">立即註冊</a> </p> </div> <%}else{%> <%- include say %> <%}%> <%- include posts %> <div class=“row”> <div class=“span4”> <h2>Carbo 說</h2> <p>東風破早梅 向暖一枝開 氷雪無人見 春從天上來</p> </div> <div class=“span4”> <h2>BYVoid 說</h2> <p> Open Chinese Convert(OpenCC)是一個開源的中文簡繁轉換項目, 致力於製作高質量的基於統計預料的簡繁轉換詞庫。 還提供函數庫(libopencc)、命令行簡繁轉換工具、人工校對工具、詞典生成程序、 在線轉換服務及圖形用戶界面。</p> </div> <div class=“span4”> <h2>佛振 說</h2> <p>中州韻輸入法引擎 / Rime Input Method Engine 取意歷史上通行的中州韻, 願寫就一部彙集音韻學智慧的輸入法經典之作。 項目網站設在 http://code.google.com/p/rimeime/ 創造應用價值是一方面,更要堅持對好技術的追求,希望能寫出靈動而易於擴展的代碼, 使其成為一款個性十足的開源輸入法。</p> </div> </div>

8 回复

首先看下res.render(‘login’,{ posts:posts });有木有?其次看下渲染页面上有没有写错

有这个代码,渲染页面就是上面那个index.ejs app.get(’/’,function(req,res){ Post.get(null,function(err,posts){ if(err){ posts=[]; } res.render(‘index’,{ title:‘首页’, posts:posts, }); }); });

你觉得是哪里的问题呢?

nodejs的这种报错不一定是posts undefined 而是你页面中存在其他问题 比如说 JS没加载 或者模板渲染出错等。他都会报这个问题

这个后来不知怎么的就好了。谢谢你啊

ReferenceError: E:\nodejs\lianxi\microblog\views\index.ejs:3 1| <link href="/stylesheets/bootstrap.css" rel=“stylesheet”> 2| <link href="/stylesheets/bootstrap-responsive.css" rel=“stylesheet”>

3| <script src="/javascripts/jquery.js"></script> 4| <script src="/javascripts/bootstrap.js"></script> 5| <br/><br/> 6| <%include header.ejs%>

posts is not defined at buf.push. .buf.push. . <div align=“center”>.buf (eval at <anonymous> (E:\nodejs\lianxi\microblog\node_modules\ejs\lib\ejs.js:242 :14), <anonymous>:39:160) at buf.push. . <div align=“center”>.buf (eval at <anonymous> (E:\nodejs\lianxi\microblog\node_modules\ejs\lib\ejs.js:242 :14), <anonymous>:41:23) at eval (eval at <anonymous> (E:\nodejs\lianxi\microblog\node_modules\ejs\lib\ejs.js:242:14), <anonym ous>:44:23) at eval (eval at <anonymous> (E:\nodejs\lianxi\microblog\node_modules\ejs\lib\ejs.js:242:14), <anonym ous>:46:45) at E:\nodejs\lianxi\microblog\node_modules\ejs\lib\ejs.js:255:15 at Object.exports.render (E:\nodejs\lianxi\microblog\node_modules\ejs\lib\ejs.js:293:13) at View.exports.renderFile [as engine] (E:\nodejs\lianxi\microblog\node_modules\ejs\lib\ejs.js:323:20 ) at View.render (E:\nodejs\lianxi\microblog\node_modules\express\lib\view.js:76:8) at Function.app.render (E:\nodejs\lianxi\microblog\node_modules\express\lib\application.js:504:10) at ServerResponse.res.render (E:\nodejs\lianxi\microblog\node_modules\express\lib\response.js:798:7) 又出问题了,不过那个posts我的确定义了,而且在其他的ejs里面好着,但是就是放到index.ejs里面不行,我就不懂了。。。他这个指向那个js,不知道什么情况?你有遇到过吗?

可能是没数据。。。也可能在哪里被重置了。。。基础知识啊。。。

终于解决了,这个原因是因为在index.js里面需要将posts:posts放进那个render()里面,这样才能够在后面的ejs里面调用。之前没有注意这个问题,昨天忽然想明白了。。。

回到顶部