【问题标题】:Error in trying to open web page with nodejs express尝试使用 nodejs express 打开网页时出错
【发布时间】:2017-09-14 19:21:15
【问题描述】:

我正在尝试使用 nodejs express 和 mongodb 开发一个网页。我已经跟踪并分析了来自 this GitHub page 的代码,但在尝试打开网页时遇到了错误。

取消注释app.js 中的以下代码部分并注释app.js 文件中代码的其余部分(未注释的代码部分):

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var hbs = require('express-handlebars');

var routes = require('./routes/index');

var app = express();

// view engine setup
app.engine('hbs', hbs({extname: 'hbs', defaultLayout: 'layout', layoutsDir: __dirname + '/views/layouts/'}));
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');

得到如下输出:

Cannot GET /

取消注释app.js中的所有语句并执行打开网页,得到如下输出:

Error: Failed to lookup view "error" in views directory "C:\Users\web\first-1\views"
    at EventEmitter.render (C:\Users\web\first-1\node_modules\express\lib\application.js:580:17)
    at ServerResponse.render (C:\Users\web\first-1\node_modules\express\lib\response.js:966:7)
    at C:\Users\web\first-1\app.js:53:7
    at Layer.handle_error (C:\Users\web\first-1\node_modules\express\lib\router\layer.js:71:5)
    at trim_prefix (C:\Users\web\first-1\node_modules\express\lib\router\index.js:315:13)
    at C:\Users\web\first-1\node_modules\express\lib\router\index.js:284:7
    at Function.process_params (C:\Users\web\first-1\node_modules\express\lib\router\index.js:335:12)
    at IncomingMessage.next (C:\Users\web\first-1\node_modules\express\lib\router\index.js:275:10)
    at done (C:\Users\web\first-1\node_modules\express\lib\response.js:961:25)
    at EventEmitter.render (C:\Users\web\first-1\node_modules\express\lib\application.js:582:14)

请帮我解决这个问题。

【问题讨论】:

  • 检查您的视图文件夹。找到里面的error.hbs文件了吗?
  • @sailesh error.hbs 文件存在于views目录下的layouts目录中
  • 应该在views目录下。
  • @sailesh 感谢您的回复....layouts 目录存在于views 目录下...让我检查一下...
  • error.hbs 应该在 views 目录中。不在布局目录中。这里应该是views/error.hbs

标签: javascript html node.js reactjs express


【解决方案1】:
app.set('views', path.join(__dirname, 'views'));

您已经为您的应用视图指定了视图目录。 res.render 在视图目录中查找文件,而不是在视图的子目录中。将您的 error.hbs 从 views/layouts 复制到 views/ 并尝试。

【讨论】:

  • 感谢您的回复和回答...现在网页可以打开了
猜你喜欢
  • 1970-01-01
  • 2013-02-09
  • 2019-06-04
  • 2012-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
相关资源
最近更新 更多