我正在尝试使用 node.js 设置用户级身份验证,因此我执行 npm install -g jsonwebtoken --save。但是,当我使用 require('jsonwebtoken'); 时遇到问题并尝试编译我的代码,它给了我标题中描述的错误。现在,由于某种原因,当我卸载 JWT 并尝试在没有它的情况下运行我的代码时,它可以编译,但显然它不起作用。我尝试重新安装它,仍然没有成功。 我的 npm --版本 6.3.0
节点--版本 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'
});
}
}
});
}
};
无需使用
-g
标签进行全局安装,只需将其本地安装在当前工作目录中即可。只要这样做:
npm install jsonwebtoken
这是因为你不能直接在代码中
require
全局安装的包。
npm install jsonwebtoken
您正在将其安装在系统级node_modules文件夹中。因此它在项目级别的 node_modules 文件夹中不可用。请从 npm install 命令中删除 -g
npm install--保存jsonwebtoken