ES6 imports for JWT

Viewed 5848

I'm making a nodeJS web app and I'm using JWT for authentication. All my work is in ES6 modules and I wanted to import JWT in the same way, but apparently it isn't yet supported by the package. I can't use the older require() format as it throws an error since I've set it to modules in my package.json. Is there a way around this or do I have to find another library altogether?

Edit: I have fixed the issue with destructuring but it's still not working. Apparently it can't find the module at all. I made sure the package is in fact installed and updated, still not working

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'jsonwebtoken' imported from /path/to/file.js

import jwt from ' jsonwebtoken'
const { sign } = jwt

class sampleClass {

   static func(user) {
      return sign(
            {
                _id: user._id,
                name: user.name,
            },
            'sample key',
            {
                expiresIn: '7d',
            },
      )
   }

}
5 Answers

Your gonna need to import it and then assign it like this

import jwt from 'jsonwebtoken';
const { sign, verify } = jwt;
const token = sign({"d":"dd"}, "secret", {expiresIn: 300})
console.log(token);
const verifycode = verify(token, "secret");
console.log(verifycode);

Could you try something:

  1. Create a folder
  2. Do npm init
  3. Create a file app.js
  4. install json web token npm i jsonwebtoken
  5. Go to package.json and add "type": "module"
  6. write in your app.js this here: import jwt from "jsonwebtoken"
  7. Execute it: node --experimental-modules app.js

Tell me then if you get an error

I am using typescript to write my node server and jwt implementation.

This is the suggestion on my terminal:

Try npm i --save-dev @types/jsonwebtoken if it exists or add a new declaration (.d.ts) file containing `declare module 'jsonwebtoken';

I just typed: npm i --save-dev @types/jsonwebtoken

Then in my file I added imports: import jwt from "jsonwebtoken"

Hope that helps.

If you are using jwt v8, just import the jsonwebtoken this way:

import * as jwt from 'jsonwebtoken'

or

import { sign, decode, verify } from 'jsonwebtoken'

You have an extra space in import jwt from ' jsonwebtoken'

Should just be import jwt from 'jsonwebtoken'

I just tested it and it works fine on my computer

Related