Express上的Node.js应用程序无法在views子目录中找到特定的pug文件

时间:2017-03-15 08:58:45

标签: javascript node.js express pug passport.js

我正在使用Express.js使用Node.js构建一个简单的播客网站。我正在使用Pug作为我的视图引擎。一切正常,直到我将我的哈巴狗文件放在views文件夹中的子目录中,以便将播客视图与管理端分开。我对Node和后端/ web开发一般都很陌生,所以我真的很感激任何帮助,因为我在网上搜索没有运气。我的项目结构如下:

/podcast
    /bin
        www
    /model
        account.js
        post.js
    /node_modules
    /public
    /routes
        admin.js
        index.js
    /views
        /admin
            index.pug
            layout.pug
            login.pug
            register.pug
        /podcast
            about.pug
            contact.pug
            error.pug
            index.pug
            layout.pug
    app.js
    package.json

我的 package.json

{
    ...
    "dependencies" : {
        "body-parser" : "~1.16.0",
        "cookie-parser" : "~1.4.3",
        "debug" : "~2.6.0",
        "express": "~4.14.1",
        ...
        "mongodb" : "^2.2.24",
        "mongoose" : "^4.9.0",
        "morgan" : "~1.7.0",
        "passport" : "^0.3.0",
        "passport-local" : "^1.0.0",
        "passport-local-mongoose" : "^4.0.0",
        "pug" : "~2.0.0-beta10",
        ...
    }
}

我的 app.js (部分)如下:

var express = require('express');
// Boilerplate modules

...

// Import routers
var index = require('./routes/index');
var admin = require('./routes/admin');
...
// view engine setup
app.set('views', path.join(__dirname, './views'));
app.set('view engine', 'pug');

// some middleware
...

app.use('/', index);
app.use('/admin', admin);
...

routes / index.js中的所有路由都可以正常工作。问题出在 admin.js

var express = require('express');
var passport = require('passport');
var Account = require('../model/account');
var router = express.Router();

// Handle /admin requests
router.get('/', function(req, res) {
    if(req.user) {
        res.render('admin/index', { user.req });
    } else {
        res.redirect('admin/login');
    }
});

// Handler /admin/login requests
router.get('/login', function(req, res) {
    res.render('admin/login', { user : req.user });
});

router.post('/login', passport.authenticate('local'), function(req, res) { 
    res.redirect('/');
});

router.get('/register', function(req, res) {
    Account.register(new Account({ username: req.body.username }), req.body.password, function(err, account) {
        if(err) {
            return res.render('admin/register', { account : account });
        }
        passport.authenticate('local')(req, res, function() {
            res.redirect('/');
        });
    }
});

另外注意:该应用程序使用MongoDB作为数据库。 一切除了我发送请求(POST或GET到 / admin / register )时有效。

这是我的第一个Node项目,所以我可能会遗漏一些完全明显的东西,但我会感激任何帮助。

0 个答案:

没有答案