auth0 / node-jsonwebtoken

JsonWebToken implementation for node.js http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html
MIT License
17.64k stars 1.22k forks source link

TypeError: Right hand side of instanceof is not an object #939

Open 176noud opened 1 year ago

176noud commented 1 year ago

jsonwebtoken@9.0.0 => jsonwebtoken@9.0.2 bunjs typescript

When generating a token using the jsonwebtoken library instead of returning a valid token it returns an error: 103 | 104 | if (!secretOrPrivateKey && options.algorithm !== 'none') { 105 | return failure(new Error('secretOrPrivateKey must have a value')); 106 | } 107 | 108 | if (secretOrPrivateKey != null && !(secretOrPrivateKey instanceof KeyObject)) { ^ TypeError: Right hand side of instanceof is not an object at /home/d/Desktop/smth/v5/node_modules/jsonwebtoken/sign.js:108:38 at /home/d/Desktop/smth/v5/index.ts:48:32 at processTicksAndRejections (:1:2602) POST - http://localhost:8080/api/auth/register failed

Using valid code: const token = await jwt.sign({ username: username }, jwtSecret);

Returns a jwt token on versions prior to 9.0.0, preferably 8.5.1 works without issues.

shakhzodkudratov commented 1 year ago

facing exactly the same issue

AlexRoosWork commented 1 year ago

me three, not using bun btw (also using v9.0.2)

and yes, I can confirm that downgrading to 8.5.1 fixes this issue.

ehuff700 commented 1 year ago

Also using Bun and this issue is happening for me as well.

EDIT: Coming back to this to mention that migrating to https://github.com/panva/jose fixed this issue for me.

EDIT 2: Found the issue, this will be broken for all bun users: https://bun.sh/docs/runtime/nodejs-apis#node-crypto. A CTRL+F shows that KeyObject, createSecretKey, and createPrivateKey are all missing... Those are requirements of sign.js

im-not-developer commented 11 months ago

be faced with the same problem.

iraycd commented 11 months ago

It's a issue with Bun: https://github.com/oven-sh/bun/issues/4983

I have updated to "FROM oven/bun:canary" on Dockerfile. This resolved the issue.

Gnex77 commented 11 months ago

I am also seeing this error in the version 9.0.2. Not using bun. Using node v18.18.2. When I set the version to 8.5.1 error goes away. Please look into this issue, I would like to use the latest version of the library.

mrksph commented 10 months ago

Same here, deleted node_modules, reinstalled all dependencies and still got the same error. Will be trying to downgrade

I use NVM but I only have two node versions installed

PS D:\workspace\> nvm ls

    18.12.1
  * 16.20.0 (Currently using 64-bit executable)
next.js 13.5.6
npm 8.19.4
node v16.20.0
jsonwebtoken 9.0.2

const decoded = jwt.verify(token, '{{SECRET}}');

TypeError: Right-hand side of 'instanceof' is not an object

Edit: After downgrading jsonwebtoken to 8.5.1 it works but I don't expect having to downgrade

wissenstein commented 10 months ago

Hi! I am using the following environment:

yarn 1.22.19
npm 10.1.0
node 20.8.0
jsonwebtoken 9.0.2

When I try to execute the following line:

const token = jwt.verify(accessToken, 'secret');

I get the following error:

TypeError: Right-hand side of 'instanceof' is not an object

Can you check please?

eric-sison commented 8 months ago

Facing the same issue.

next: 14.1.0
node: 20.9.0
npm: 10.1.0
jsonwebtoken: ^9.0.2
@types/jsonwebtoken: ^9.0.5
alexkirillovtech commented 6 months ago

Facing same issue

    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-i18next": "^11.18.5",
    "react-router-dom": "^6.2.1",
    "ua-parser-js": "^1.0.32",
    "webpack-dev-middleware": "^4.3.0",
    "jsonwebtoken": "^9.0.2"
johannchopin-buyco commented 6 months ago

Hey @jakelacey2012 👋 Could you please tell us what's the status on this one as v9 is definitely broken? Thanks for the work put on this package by the way.

SashaJson commented 2 months ago

Facing the same issue

"dependencies": { "bcrypt": "^5.1.1", "jsonwebtoken": "^9.0.2" }

node v18.6.0