Velvet Star Monitor

Standout celebrity highlights with iconic style.

news

jsonwebtoken.sign() fails with expiresIn option set

Writer Emily Wong

I need to get a token by signing a user ID with JWT:

var token = jwt.sign(accounts[request.headers.login].id, privateKey, {expiresIn: 60});

Where id and privateKey are strings.

The error is Error: Uncaught error: "expiresIn" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60. If I remove options object at all, it works, but without options I need to set.

The issue seems to be simple but I don't know how to fix it, what am I doing wrong?

4 Answers

payload could be an object literal, buffer or string. Please note that exp is only set if the payload is an object literal.

1

Set the payload as an object if you want to be able to set the expiresIn option

var token = jwt.sign( {id: accounts[request.headers.login].id}, // object and not string privateKey, {expiresIn: '60d'} // added days, default for ex 60 would be ms, you can also provide '1h' etc
)
5

In my case, it was a wrong file name that was referencing the env variables.

technicianAuthSchema.methods.getSignedToken = async function() {
return jwt.sign( { id: this._id }, process.env.JWT_SECRET, { expiresIn: process.env.EXPIRE, } );};

instead of this

technicianAuthSchema.methods.getSignedToken = async function() {
return jwt.sign( { id: this._id }, process.env.JWT_SECRET, { expiresIn: process.env.JWT_EXPIRE, } );};

Wrong file name: expiresIn: process.env.EXPIRE
Correct file name: expiresIn: process.env.JWT_EXPIRE

I am also facing the same question.There is my answer.the initial code

const setToken = function (data) { return new Promise((resolve, reject) => { const token = jwt.sign( data , signkey, { expiresIn: "1d" }); resolve(token); });
};

The first parameter(data) should be object or add braces({});the edited code

const setToken = function (data) { return new Promise((resolve, reject) => { const token = jwt.sign({ data }, signkey, { expiresIn: "1d" }); resolve(token); });
};
2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy