【问题标题】:Rendering view in Node/Express always causes error在 Node/Express 中渲染视图总是会导致错误
【发布时间】:2014-11-11 13:27:05
【问题描述】:

我的 nodejs/express 应用程序配置如下;

app.set('views', __dirname + './views');
app.set('view engine', 'ejs');

然后我像这样添加了一条路线

app.get('/page/MyPage', function(req, res) {

    // res.statusCode = 200; // Setting the status code here has no effect on the error.
    res.render('MyPage', { Data: "Stuff" });

});

但是,每当我请求页面 http://localhost:8000/page/MyPage 时,节点都会以 TypeError: Cannot call method 'toString' of undefined 崩溃,从而中断 http.js 类。

确切的行:

 var statusLine = 'HTTP/1.1 ' + statusCode.toString() + ' ' +
               reasonPhrase + CRLF; // Aprox line 1180, in ServerResponse.prototype.writeHead = function(statusCode) function.

我已尝试在渲染中向“MyPage”添加扩展,还尝试了其他视图引擎。所有这些都会产生相同的结果。

视图确实存在于 /views 目录中。

有人有什么建议吗?

【问题讨论】:

  • @OrangeDog,不是重复的,这是关于尝试设置http状态码,这是关于尝试渲染视图时节点/express崩溃。
  • 要么你设置错误,要么你的安装坏了,要么你没有告诉我们。
  • 我希望我知道还有什么要说的,node/express 安装似乎很好,因为我用它提供了一个完整的 api,刚刚通过了一个新的要求来呈现 html 页面。跨度>
  • 一个演示问题的最小工作示例。

标签: javascript node.js express


【解决方案1】:

app.set('views', __dirname + './views'); 应该是app.set('views', __dirname + '/views');

【讨论】:

  • 不幸的是,这会导致相同的结果。
【解决方案2】:

解决方案:

在浏览了大量的 javascript 之后,我发现了这个问题。看起来虽然 express 文档 (http://expressjs.com/guide.html) 建议这是自动完成的,但我需要手动设置视图引擎。

在这种情况下,我也使用 vash 视图引擎。

app.set('views', __dirname + '/views');
app.set('view engine', 'vash');
app.engine('.vash', require('vash').renderFile);

这允许我的视图按预期呈现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多