#node.js #express
#node.js #экспресс
Вопрос:
Я получаю authenticate.getToken is not a function
сообщение об ошибке.
var express = require('express');
const bodyParser = require('body-parser');
var User = require('../models/user');
const passport = require('passport');
var authenticate = require('../authenticate');
var router = express.Router();
router.use(bodyParser.json());
/* GET users listing. */
router.get('/', function (req, res, next) {
res.send('respond with a resource');
});
router.post('/signup', (req, res, next) => {
User.register(
new User({ username: req.body.username }),
req.body.password, (err, user) => {
if (err) {
res.statusCode = 500;
res.setHeader('Content-Type', 'application/json');
res.json({ err: err });
} else {
passport.authenticate('local')(req, res, () => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json({ success: true, status: 'Registration Successful!' });
});
}
}
);
});
router.post('/login', passport.authenticate('local'), (req, res) => {
var token = authenticate.getToken({ _id: req.user._id });
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json({ success: true, token: token, status: 'You are successfully logged in!' });
});
router.get('/logout', (req, res) => {
if (req.session) { req.session.destroy();
res.clearCookie('session-id');
res.redirect('/');
} else {
var err = new Error('you are not logged in');
err.status = 403;
next(err);
}
});
module.exports = router;
Комментарии:
1. Может быть, вы забыли экспортировать его из
../authenticate.js
?
Ответ №1:
Ошибка просто означает, что authenticate.getToken не является функцией. правильно ли вы экспортировали в своем authenticate.js файл? Возможно, стоит опубликовать ваш authenticate.js файл в вашу операционную.
Для работы это должно выглядеть примерно так:
authenticate.js
module.exports = {
getToken: function() {
// code here
}
}