找不到模块 'jsonwebtoken' Node.js。

7
我正在尝试使用node.js设置用户级身份验证,所以我进行了npm install -g jsonwebtoken --save。然而,当我使用require('jsonwebtoken');并尝试编译我的代码时,它会给出标题中描述的错误。现在,由于某种原因,当我卸载JWT并尝试在没有它的情况下运行我的代码时,它可以编译,但显然无法正常工作。我尝试重新安装它,但仍然没有成功。 我的npm版本是6.3.0 我的node版本是v11.1.0 安装命令为:npm install -g jsonwebtoken --save 代码:
'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


1
const jwt = require('jsonwebtoken'); - Chance
除非我卸载,否则无法工作。 - xnok
3个回答

24

不要使用-g标签全局安装,只需将其安装到当前工作目录即可。执行以下命令:

npm install jsonwebtoken --save

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


1

简单就是美:

npm install jsonwebtoken

-3

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

npm install --save jsonwebtoken


1
你的回答中没有任何新内容,所有内容已经在现有的回答中写过了。 - jps

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接