Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 错误:查找视图失败";“错误”;在视图目录中使用手柄_Javascript_Node.js_Express - Fatal编程技术网

Javascript 错误:查找视图失败";“错误”;在视图目录中使用手柄

Javascript 错误:查找视图失败";“错误”;在视图目录中使用手柄,javascript,node.js,express,Javascript,Node.js,Express,嗨,我对NodeJS中的web开发非常陌生。在今天的工作中,我的任务是为web应用程序设置一个环境。我使用的是把手,但我无法使“视图引擎设置”正常工作,以便渲染“视图”文件和布局文件夹。我已经看过了文档和每一篇与我的问题类似的堆栈溢出文章,但我仍然一无所获。下面是我的server.js代码和我的应用程序架构。我将非常感谢任何反馈,提前谢谢 var express = require('express'); var path = require('path'); var hand

嗨,我对NodeJS中的web开发非常陌生。在今天的工作中,我的任务是为web应用程序设置一个环境。我使用的是把手,但我无法使“视图引擎设置”正常工作,以便渲染“视图”文件和布局文件夹。我已经看过了文档和每一篇与我的问题类似的堆栈溢出文章,但我仍然一无所获。下面是我的server.js代码和我的应用程序架构。我将非常感谢任何反馈,提前谢谢

 var express = require('express');
    var path = require('path');
    var handlebars = require('handlebars');
    var exphbs = require('express-handlebars');
    var app = express();
    var cookieParser = require('cookie-parser');
    var bodyParser = require('body-parser');

    //view engine setup
    app.set('views', './views')
    app.engine('.hbs', exphbs({ defaultLayout: 'main', extname: '.hbs' }));
    app.set('view engine', '.hbs');

    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(express.static(__dirname + '/public'));

    //routes
    app.get('/home', function(req, res){
    res.render('home');
    });
    //error handlers
    //404 catch-all handler(middleware)
    app.use(function(req, res, next){
    res.status(404);
    res.send('404');
   });
    //500 error handler(middleware)
    app.use(function(req, res, err, next){
      console.error(err.stack);
      res.status(500);
      res.send('500');
   });
   // development error handler
   // will print stacktrace
   if (app.get('env') === 'development') {
     app.use(function(err, req, res, next) {
       res.status(err.status || 500);
       res.render('error', {
         message: err.message,
         error: err
       });
     });
   }
   // production error handler
   // no stacktraces leaked to user
   app.use(function(err, req, res, next) {
     res.status(err.status || 500);
     res.render('error', {
       message: err.message,
       error: {}
     });
   });

app.listen(process.env.PORT || 5000);
console.log('Listening on port 5000');


fgcms
├── server.js
├── node_modules
└── package.json
├── public
└── views
       ├── layouts──home.hbs
       └──main.hbs

你的home.hbs在布局中,你的视图被设置为./views目录,因此你可能必须将其放在render res.render('layouts/home')@JoseHermosillaRodrigo我已经尝试过了,但没有成功,我知道当我将视图设置到视图文件夹时会出现问题,我只是不知道我做错了什么。如果home.hbs不是布局,那么它在布局文件夹中做了什么????另外main.hbs可能是layout,而您在layout文件夹中没有它。因此,首先将hbs文件放在正确的文件夹中。现在,如果home.hbs位于views文件夹中。/views/home.hbs,则res.render(“home”);应该work@Molda那也不行,伙计:(我只是注意到它抱怨错误视图。你有。/views/error.hbs吗?