“instanceof”的右侧不是对象,jsonwebtoken
2022-12-24
27157
我将在我的 React 项目中使用
jsonwebtoken
创建表单数据令牌。
import jwt from 'jsonwebtoken';
const MyForm = () => {
const submitForm = (e) => {
e.preventDefault();
const data = { name: 'name', email: 'email', subject: 'subject', message: 'message' };
const token = jwt.sign(data, 'qwerty');
console.log(token);
}
return(
<form onSubmit={submitForm}>
...
</form>
);
}
export default MyForm;
发生以下错误。
TypeError: Right-hand side of 'instanceof' is not an object
push../node_modules/jsonwebtoken/sign.js.module.exports [as sign]
../node_modules/jsonwebtoken/sign.js:108
105 | return failure(new Error('secretOrPrivateKey must have a value'));
106 | }
107 |
> 108 | if (secretOrPrivateKey != null && !(secretOrPrivateKey instanceof KeyObject)) {
| ^ 109 | try {
110 | secretOrPrivateKey = createPrivateKey(secretOrPrivateKey)
111 | } catch (_) {
View compiled
submitEmail
../MyForm.js:22
19 | e.preventDefault();
20 |
21 | const data = { name: 'name', email: 'email', subject: 'subject', message: 'message' };
> 22 | const token = jwt.sign(data, 'qwerty');
| ^ 23 | console.log(token)
24 |
25 |
为什么会出现这个错误?
我尝试解决这个问题,但还没有结果。
任何帮助修复它的帮助都将不胜感激。谢谢。
3个回答
我遇到了同样的问题。问题是 jsonwebtoken 包的 9.0.0 版本不支持节点版本 11 及以下版本,因此我通过降级 jsonwebtoken 包的版本解决了该问题。
我通过在 package.json 文件中将 jsonwebtoken 依赖项 从 9.0.0 更改为 8.5.1 ,然后在终端中运行 npm update 来实现此目的。
这里可能建议升级您的节点版本,但由于 npm 问题,我还没有设法更新我的节点版本,因此这只是一种解决方法。
查看以下文章,其中解释了 jsonwebtoken 包从 v8 迁移到 v9 的过程。 https://github.com/auth0/node-jsonwebtoken/wiki/Migration-Notes:-v8-to-v9
92lexus
2023-01-11
在这种情况下,您需要使用最新的 Node 版本,因此请首先检查您的 Node 版本,此错误可能出现在版本
10.*.*
因此请更新您的 Nodejs 版本
nikunj bodarya
2023-01-31