繁体   English   中英

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

[英]routes in exported router not available in app

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

/account/login (POST)
/account/login (GET)
/account/register(POST)
/account/logout (GET)

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

在此处输入图片说明

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

我的文件结构是这样的:

在此处输入图片说明

我的account.js文件如下所示:

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;

我的index.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;

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

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

对此:

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

并确保registerAccount调用next()并希望调用createUser()

doc中 ,使用以下语法:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM