2011-09-22 125 views
1

我尝试了节点,它的Express框架通过Express样板安装。我花了一段时间才弄清楚我需要安装Redis(顺便说一句,如果你制作的样板包括所有必需的软件,或者警告某些软件的要求--Redis从未按要求提及),并让我的方式围绕server.js文件。节点JS Express锅炉板和渲染

现在我还是个陌生的我怎么能在这建立一个网站..

有一个问题困扰我特别 - 当我运行server.js文件,它说,这一切都很好。当我尝试在浏览器中访问它时,它说'从本地主机传输数据'并且永远不会结束 - 就像渲染没有完成发送并且永远不会发送标头。没有错误,没有日志,没有什么 - res.render('index')只是挂起。该文件存在,脚本找到它,但什么都没有发生。我没有定义渲染回调,所以头文件应该照常发送。 另一方面,如果我用一个简单的写('Hello world')替换渲染命令;然后做一个res.end();它的作用就像一个魅力。

我在做什么错误渲染?我没有改变从原来的安装顺便说一句。有问题的文件是index.ejs,它在views /中,我甚至调用了app.register('。ejs',require('ejs'));以防万一在渲染本身之前。 EJS已安装。另外值得注意的是 - 如果我做了res.render('index');然后res.write('Hello');紧接着是res.end();我在屏幕上显示“Hello”,但渲染从不发生 - 它只是挂起并且显示“从本地主机传输数据”。所以应用程序不会真的死或挂起,它只是从来没有完成渲染。

编辑:有趣的事件变化:如果我在渲染中定义了回调,则响应结束。没有更多的“传输数据...”,但视图永远不会呈现,布局也不会。来源在检查时是完全空的。没有任何错误,也没有例外。

+0

https://github.com/munichlinux/expressjs-boilerplate – Prashanth

回答

0

问题修复。它变成我们的render()必须是路由链中绝对最后的命令。把res.write('你好');和res.end();之后它正是破坏它。

我删除了所有内容,只写了res.render('index'),它像一个魅力一样工作。从我的失败学习,新手 - 渲染后不输出任何东西!

+0

'.render'调用'.end'因此http连接已经结束。这意味着你没有什么可写的。它没有抛出错误的事实是令人惊讶的 – Raynos