node.js - Node JS Express 样板和渲染

标签 node.js rendering render express ejs

我正在尝试 Node,它是通过 Express 样板安装的 Express 框架。我花了一段时间才弄清楚我需要安装 Redis(顺便说一句,如果您正在制作样板,则要么包含所有必需的软件,要么警告某些软件的要求 - Redis 从未按要求提及)并绕过 server.js 文件。

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

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

我的渲染做错了什么?顺便说一句,我没有对原始安装进行任何更改。有问题的文件是index.ejs,它位于views/中,我什至调用了app.register('.ejs', require('ejs'));以防万一在渲染之前。 EJS 已安装。

还值得注意 - 如果我执行 res.render('index');然后 res.write('Hello');紧接着,接着是 res.end();,我确实在屏幕上看到“Hello”,但渲染从未发生 - 它只是挂起并显示“从本地主机传输数据”。因此应用程序并没有真正死掉或挂起,它只是永远不会完成渲染。

编辑:有趣的事件转变:如果我在渲染中定义回调,响应就会结束。不再有“传输数据...”,但 View 永远不会呈现,布局也不会呈现。经检查,源完全是空的。没有任何错误,也没有异常(exception)。

最佳答案

问题已解决。事实证明,我们的 render() 必须是路由链中绝对的最后一个命令。将 res.write('Hello');和 res.end();正是它破坏了它。

我删除了所有内容并简单地编写了 res.render('index') ,它的工作就像一个魅力。新手们,从我的失败中吸取教训 - 渲染后没有输出任何内容!

关于node.js - Node JS Express 样板和渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7511299/

相关文章:

node.js - : SET: command not found in `npm start`

javascript - 无法让plotly + node.js 流式传输通过POST 请求发送的数据

html - 在 IE 中列出元素渲染错误?

image - Grails渲染插件不会渲染图像

在 heroku 中部署 Node.js 应用程序

javascript - 将 JSON 转换为 Javascript 数组对象 - node.js

AngularJS ng-repeat 在 HighCharts 渲染时卡住浏览器

php - 我如何从 MySQL 数据库中渲染 PHP 代码?

c++ - OpenGL 渲染错误

javascript - AngularJS - 如何获取渲染的 DOM 元素的innerHTML