找不到模块'jsonwebtoken'Node.js

时间:2018-12-11 04:02:15

标签: javascript node.js api jwt

我试图使用node.js设置用户级别的身份验证,所以我去做npm install -g jsonwebtoken --save。但是,当我使用require('jsonwebtoken');时遇到问题。并尝试编译我的代码,它给了我上面标题中描述的错误。现在,由于某种原因,当我卸载JWT并尝试在没有它的情况下运行我的代码时,它会编译,但显然不起作用。我尝试重新安装它,仍然没有成功。 我的npm --version 6.3.0

node --version v11.1.0

npm install -g jsonwebtoken-保存 + 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

3 个答案:

答案 0 :(得分:2)

与其使用-g标签在全球范围内进行安装,不如将其本地安装在当前工作目录中。 npm install jsonwebtoken --save应该可以使用。

这是因为您无法直接在代码中require全局安装的软件包。

答案 1 :(得分:0)

您正在安装系统级的node_modules文件夹。因此,它在项目级别的node_modules文件夹中不可用。请从npm install命令中删除-g

npm install--保存jsonwebtoken

答案 2 :(得分:0)

做简单的事:

npm install jsonwebtoken