Node JS Express Boilerplate和渲染

时间:2011-09-22 07:44:17

标签: node.js rendering render express ejs

我正在通过Express样板安装尝试节点和它的Express框架。我花了一段时间才弄明白我需要安装Redis(顺便说一下,如果你正在制作一个样板包含所有必需的软件或警告某些软件的要求 - Redis从未被要求提及)并且让我的方式在server.js文件周围。

现在我仍然不知道如何在此建立一个网站..

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

渲染时我做错了什么?我没有改变原来的安装btw。有问题的文件是index.ejs,它在views /中,我甚至调用了app.register('。ejs',require('ejs'));以防万一在渲染本身之前。已安装EJS。

另外值得注意的是 - 如果我做res.render('index');然后res.write('你好');紧接着之后,接着是res.end();,我在屏幕上显示“Hello”,但渲染永远不会发生 - 它只是挂起并说“从localhost传输数据”。所以应用程序并没有真正死亡或挂起,它只是永远不会完成渲染。

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

1 个答案:

答案 0 :(得分:0)

问题已解决。它使我们的render()必须是路由链中的绝对最后一个命令。放res.write('Hello');和res.end();在它完全被打破之后。

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