簡體   English   中英

找不到模塊“jsonwebtoken”Node.js

[英]Cannot find module 'jsonwebtoken' Node.js

我正在嘗試使用 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'
                    });
                }
            }
        });
    }
};

在此處輸入圖像描述

不要使用-g標簽將其全局安裝,只需將其本地安裝在當前工作目錄中即可。 做就是了:

npm install jsonwebtoken --save

這是因為您不能在代碼中直接require全局安裝的包。

就做簡單的:

npm install jsonwebtoken

您正在安裝它的系統級 node_modules 文件夾。 因此它在項目級 node_modules 文件夾中不可用。 請從 npm install 命令中刪除 -g

npm install -- -- 保存jsonwebtoken

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM