我有node-express应用程序,其中有一堆用于登录,注销和注册的路由,以及一个用于检查授权路由的路由,只能通过提供authToken来访问该路由。我将路线移至单独的路线文件,但出现了以上错误。
这是我的用户路线文件:
const express = require('express');
const authenticate = require('./../middleware/authenticate');
const router = express.Router();
const {User} = require('./../models/user');
router.post('/',(req, res) => {
var body = _.pick(req.body,['email','password']);
var user = new User(body);
user.save().then(() => {
return user.generateAuthToken()
}).then((token) => {
res.header('x-auth', token).send(user);
}).catch((e) => {
res.status(400).send(e);
});
});
router.post('/login',(req, res) => {
var body = _.pick(req.body, ['email', 'password']);
User.findByCredentials(body.email, body.password).then((user) => {
return user.generateAuthToken().then((token) => {
res.header('x-auth', token).send(user);
});
}).catch((e) => {
res.status(400).send(e);
});
});
router.delete('/logout',authenticate, (req, res) => {
req.user.removeToken(req.token).then(() => {
res.status(200).send();
},(e) => {
res.status(400).send(e);
}) ;
});
router.get('/me',authenticate, (req,res) => {
res.send(req.user);
});
module.exports = router;
以下是我的主要server.js文件:
const express = require('express');
const _ = require('lodash');
var app = express();
const usersRoutes = require('./routes/users');
app.use(express.json());
app.use('/users', usersRoutes);
var {mongoose} = require('./db/mongoose');
var {User} = require('./models/user');
var {authenticate} = require('./middleware/authenticate');
const port = process.env.PORT || 3000 ;
app.listen(port, () => console.log(`Listening on ${port}...`))
我有一个用于用户的模型/架构(猫鼬)文件,因此如果您觉得需要我准备编辑我的问题。谢谢。
问题在于,router.delete
期望在中间件参数上使用一个函数(就像您在server.js文件app.use(express.json())
中使用进行的操作一样),因此它可以像回调一样使用,每当请求到达您的路由时都会被调用。
尝试更改authenticate
为authenticate()
。
似乎在用户路由文件中,您正在导入包含authenticate函数的整个模块,因此,当尝试像函数一样访问它时,会出现错误。您需要像在server.js文件中一样导入它。
更改行const authenticate = require('./../middleware/authenticate');
了const {authenticate} = require('./../middleware/authenticate');
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句