Javascript 无法查找'/用户/配置文件';在视图目录中

Javascript 无法查找'/用户/配置文件';在视图目录中,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我正在尝试使用node.js、express.js和mongodb构建一个购物车。我正在构建注册功能。我的问题是,当我尝试访问localhost:3000/user/profile链接时,我收到以下错误消息: Failed to lookup view "/user/profile" in views directory "/Users/vynguyen/shopping-cart/views Error: Failed to lookup view "/user/profi

我正在尝试使用node.js、express.js和mongodb构建一个购物车。我正在构建注册功能。我的问题是,当我尝试访问localhost:3000/user/profile链接时,我收到以下错误消息:

Failed to lookup view "/user/profile" in views directory 
    "/Users/vynguyen/shopping-cart/views

    Error: Failed to lookup view "/user/profile" in views directory "/Users/vynguyen/shopping-cart/views"
        at EventEmitter.render (/Users/vynguyen/shopping-cart/node_modules/express/lib/application.js:579:17)
        at ServerResponse.render (/Users/vynguyen/shopping-cart/node_modules/express/lib/response.js:960:7)
        at /Users/vynguyen/shopping-cart/routes/index.js:34:6
        at Layer.handle [as handle_request] (/Users/vynguyen/shopping-cart/node_modules/express/lib/router/layer.js:95:5)
        at next (/Users/vynguyen/shopping-cart/node_modules/express/lib/router/route.js:131:13)
        at Route.dispatch (/Users/vynguyen/shopping-cart/node_modules/express/lib/router/route.js:112:3)
        at Layer.handle [as handle_request] (/Users/vynguyen/shopping-cart/node_modules/express/lib/router/layer.js:95:5)
        at /Users/vynguyen/shopping-cart/node_modules/express/lib/router/index.js:277:22
        at Function.process_params (/Users/vynguyen/shopping-cart/node_modules/express/lib/router/index.js:330:12)
        at next (/Users/vynguyen/shopping-cart/node_modules/express/lib/router/index.js:271:10)
        at csrf (/Users/vynguyen/shopping-cart/node_modules/csurf/index.js:117:5)
        at Layer.handle [as handle_request] (/Users/vynguyen/shopping-cart/node_modules/express/lib/router/layer.js:95:5)
        at trim_prefix (/Users/vynguyen/shopping-cart/node_modules/express/lib/router/index.js:312:13)
        at /Users/vynguyen/shopping-cart/node_modules/express/lib/router/index.js:280:7
        at Function.process_params (/Users/vynguyen/shopping-cart/node_modules/express/lib/router/index.js:330:12)
        at next (/Users/vynguyen/shopping-cart/node_modules/express/lib/router/index.js:271:10
)

profile.hbs文件位于正确的文件夹中,但由于某些原因,服务器无法将其调出

以下是整个文件结构:

这是我的index.js文件:

var express = require('express');
var router = express.Router();
var csrf = require('csurf');
var passport = require('passport');

var Product = require('../models/product');

var csrfProtection = csrf();
router.use(csrfProtection);

/* GET home page. */
router.get('/', function(req, res, next) {
    Product.find(function(err, docs) {
        var productChunks = [];
        var chunkSize = 3;
        for (var i = 0; i < docs.length; i += chunkSize) {
            productChunks.push(docs.slice(i, i + chunkSize));
        }
        res.render('shop/index', { title: 'Shopping Cart', products: productChunks });
    });
});

router.get('/user/signup', function(req, res, next) {
    res.render('user/signup', {csrfToken: req.csrfToken()});
});

router.post('/user/signup', passport.authenticate('local.signup', {
    successRedirect: '/user/profile',
    failureRedirect: '/user/signup',
    failureFlash: true
}));

router.get('/user/profile', function(req, res, next){
    res.render('/user/profile');
});

module.exports = router;

解析视图文件路径时,带前导斜杠的视图路径将解析为根目录,因此会出现错误。您需要相对于
视图
目录解析视图文件。在
res.render
方法中使用
user/profile
/user/profile
可以正确解析视图文件

正确代码:
res.render('user/profile')
res.render('./user/profile')

尝试
user/profile
(不要以'/'开头)尝试此操作并得到一个'Not Found 404'错误。/user/profile'?您有错误的痕迹吗?为什么是404?顺便说一下,我建议的这个更改仅用于呈现代码
res.render('user/profile')@gp-修复了它。非常感谢。
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 expressHbs = require('express-handlebars');
var mongoose = require('mongoose');
var session = require('express-session');
var passport = require('passport');
var flash = require('connect-flash');

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

var app = express();

mongoose.connect('localhost:27017/shopping');
require('./config/passport');

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

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(session({secret: 'mysupersecret', resave: false, saveUninitialized: false}));

app.use(express.static(path.join(__dirname, 'public')));

app.use(flash());
app.use(passport.initialize());
app.use(passport.session());

app.use('/user', userRoutes);
app.use('/', routes);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;