authenticate.getToken не является функцией в версии node.js v12.18.2

#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
  }
}