应用中不存在导出路由器中的路由

时间:2018-07-22 22:23:05

标签: express routing

我正在尝试导出路由器“帐户”以在我的应用中使用。 “帐户”路由器具有路径“ /登录”(POST),“ /注册”(POST),“登录”(GET)和“ /注销”(POST)。在我的索引应用程序中,我正在使用路径为“ / account”的路由器。因此路径应为:

const express = require('express');
const passport = require('passport');
const Account = require('../models/Account');
const Branch = require('../models/Branch')
const router = express.Router({mergeParams: true});


const registerAccount = (req, res, next) => {
     //register the account
};

const createUser  = (req,res) => {
     //create a user in another db
}


router.post('/register',
    [registerAccount, createUser]);



router.get('/login', function(req, res) {
    res.json(user);
});

router.post('/login', passport.authenticate('local', { successRedirect: '/',
    failureRedirect: 'account/login' }));

router.get('/logout', function(req, res) {
    req.logout();
    res.redirect('/');
});

});

module.exports=router;

但是当我调用这些路径时,应用程序找不到它们:

enter image description here

如何在“ accounts.js”路由器中获取路径以在“ index.js”应用中正常工作?

我的文件结构是这样的:

enter image description here

我的account.js文件如下:

// index.js
var express = require("express");
var bodyParser = require("body-parser");
var jwt = require("jwt-simple");
var auth = require("../auth/auth.js")();
var users = require("./users.js");
var cfg = require("../config.js");
const accountController = require('./account');

var app = express();

app.use(bodyParser.json());
app.use(auth.initialize());
app.use('/account',accountController);

app.get("/", function(req, res) {
    res.json({
        status: "My API is alive!"
    });
});


app.post("/token", function(req, res) {
    //some token stuff that doesn't matter here
});

module.exports = app;

我的index.js看起来像这样:

{{1}}

1 个答案:

答案 0 :(得分:0)

对于初学者来说,您不会将数组传递给router.post(),因此请更改此内容:

router.post('/register', [registerAccount, createUser]);

对此:

router.post('/register', registerAccount, createUser);

并确保registerAccount完成后会调用next()并希望createUser()被调用。

the doc中,使用以下语法:

app.post(path, callback [, callback ...])

[, callback]中的括号表示该参数是可选的。不应使用括号。