Open jim-king-2000 opened 8 months ago
Facing same issue! what happened?
For me, not working with even 9.0.0. I can access other functions such as decode
I started experiencing this problem after I switched to using ESM modules on my code. The solution, as the error message suggests, was to stop using named exports and rely on the default import syntax.
It can be written like this
import jwt from 'jsonwebtoken'; const { sign, verify } = jwt;
I just commented @ts-ignore
before calling verify method and it all started working. Weird. Can anyone tell me what might be the issue? Using Nitro server.
Same problem when importing the error classes on v.9.0.2, and TypeScript doesn't throw any error in editor, but Nitro (Nuxt v3.13.0) does. So far, I only find a solution by not destructuring the module and importing everything.
import { JsonWebTokenError, TokenExpiredError } from 'jsonwebtoken' // ❌
import jwt from 'jsonwebtoken' // 👍
jwt.JsonWebTokenError // 👍
Idk if it's a jsonwebtoken or nitro/nuxt related bug...
Just ran into this issue as well using Typescript. I want to deploy some ESM code that is using the sign function like this:
import { sign } from 'jsonwebtoken';
On compilation this is fine because the '@types/jsonwebtoken' lib is suggesting that the 'sign' function is exported. However when the code is executed I get this error: SyntaxError: The requested module 'jsonwebtoken' does not provide an export named 'sign'
. This is running on Node.js 20.
I guess the issue is that this package is CommonJS only, so when importing this into ESM, named exports are not working and you have to fall back on using default import. Still not sure why Typescript thinks it should work though.
I guess the issue is that this package is CommonJS only, so when importing this into ESM, named exports are not working and you have to fall back on using default import. Still not sure why Typescript thinks it should work though.
ChatGPT told me this too after even your solution wouldn't work. It suggested using import * as jwt from 'jsonwebtoken'
and jwt.sign(...)
instead of just sign(...)
which does seem to eliminate all errors in my case.
Description
import
jsonwebtoken
throws errorReproduction
The code:
The error message:
It works on v9.0.0 but fails on 9.0.2.
Environment