Не удается найти модуль 'jsonwebtoken' Node.js - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь настроить аутентификацию на уровне пользователя с помощью node.js, поэтому я иду и делаю npm install -g jsonwebtoken --save.Однако при использовании require я сталкиваюсь с проблемами ('jsonwebtoken');и попробуйте скомпилировать мой код, он дает мне ошибку, описанную выше в заголовке.Теперь, по какой-то причине, когда я удаляю JWT и пытаюсь запустить свой код без него, он компилируется, но, очевидно, он не работает.Я попытался переустановить его, но безуспешно.Мой npm --version 6.3.0

узел --version v11.1.0

npm install -g jsonwebtoken --save + jsonwebtoken@8.4.0

код:

'use strict';

require('jsonwebtoken');

exports.generateToken = async (data) => {
    return jwt.sign(data, global.SALT_KEY, { expiresIn: '1d' });
}

exports.decodeToken = async (token) => {
    var data = await jwt.verify(token, global.SALT_KEY);
    return data;
}

exports.authorize = function (req, res, next) {
    var token = req.body.token || req.query.token || req.headers['x-access-token'];

    if (!token) {
        res.status(401).json({
            message: 'Acesso Restrito'
        });
    } else {
        jwt.verify(token, global.SALT_KEY, function (error, decoded) {
            if (error) {
                res.status(401).json({
                    message: 'Token Inválido'
                });
            } else {
                next();
            }
        });
    }
};

exports.isAdmin = function (req, res, next) {
    var token = req.body.token || req.query.token || req.headers['x-access-token'];

    if (!token) {
        res.status(401).json({
            message: 'Token Inválido'
        });
    } else {
        jwt.verify(token, global.SALT_KEY, function (error, decoded) {
            if (error) {
                res.status(401).json({
                    message: 'Token Inválido'
                });
            } else {
                if (decoded.roles.includes('admin')) {
                    next();
                } else {
                    res.status(403).json({
                        message: 'Esta funcionalidade é restrita para administradores'
                    });
                }
            }
        });
    }
};

enter image description here

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Вы устанавливаете в нем папку системного уровня node_modules.Поэтому он недоступен в папке node_modules уровня проекта.Удалите - g из команды установки npm

установка npm - - сохраните jsonwebtoken

0 голосов
/ 11 декабря 2018

Вместо того, чтобы устанавливать его глобально с тегом -g, просто установите его локально в текущем рабочем каталоге.Просто сделайте:

npm install jsonwebtoken --save

Это потому, что вы не можете напрямую require глобально установить пакет в своем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...