找不到模块“jsonwebtoken”Node.js

Posted

技术标签:

【中文标题】找不到模块“jsonwebtoken”Node.js【英文标题】:Cannot find module 'jsonwebtoken' Node.js 【发布时间】:2019-05-12 00:49:18 【问题描述】:

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

节点--版本 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'
                    );
                
            
        );
    
;

【问题讨论】:

const jwt = require('jsonwebtoken'); 除非我卸载,否则无法使用 【参考方案1】:

不要使用-g 标记全局安装它,只需将其安装在本地当前工作目录中即可。做吧:

npm install jsonwebtoken --save

这是因为你不能在你的代码中直接require一个全局安装的包。

【讨论】:

【参考方案2】:

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

npm install - - 保存 jsonwebtoken

【讨论】:

您的答案不包含任何新内容,所有内容都已写入现有答案。【参考方案3】:

做简单的事:

npm install jsonwebtoken

【讨论】:

以上是关于找不到模块“jsonwebtoken”Node.js的主要内容,如果未能解决你的问题,请参考以下文章

颤振:“致命错误:找不到模块'位置'”Xcode找不到模块

windows找不到指定模块怎么办?

找不到指定模块

S7200编程时找不到添加模似量模块设置

解决找不到pip模块的问题

电脑找不到指定的模块是怎么回事?