lizardcoder
lizardcoder

Reputation: 336

Why do I encounter this error: "time.replaceAll is not a function"

Hello I keep getting a error of "time.replaceAll is not a function" and I cant figure out why since I tried time.replaceAll in a online code editor and it worked.

exports.ForgotPasswordToken = async (req, res) => {
  username = req.body.username;
  const add_minutes = function (dt, minutes) {
    return new Date(dt.getTime() + minutes * 60000);
  };
  const time = add_minutes(new Date(), 10).toString();
  const decimalTime = time.replaceAll(":", "").substr("16", "6");
  const tokenExp = decimalTime;
  const token = Math.random()
    .toString(24)
    .replace(/[^a-z]+/g, "")
    .substr(0, 5);
  hashed_token = bcrypt.genSalt(10, (err, salt) => {
    bcrypt.hash(token, salt, (err, hash) => {
      if (err) {
        console.log(err);
      }
    });
  });

  await User.findOne({ username: username }, (err, obj) => {
    const userEmail = obj.email;
  });

  let newToken = new Token({
    tokenUser: username,
    tokenVal: hashed_token,
    tokenExpiration: tokenExp,
  });

  const resetLink = `https://localhost:5000/password/reset/${token}/${username}`;
  newToken.save();
  passwordResetEmail(username, userEmail, resetLink);
  res.redirect("/login");
};

Upvotes: 1

Views: 321

Answers (1)

CertainPerformance
CertainPerformance

Reputation: 370699

String.prototype.replaceAll is a very new feature that only recently became available in JS environments. If you want to use it in Node, either upgrade to Node 15 (15.0.0 is the earliest Node version that supports it), or use a regular expression instead:

time.replace(/:/g, '')

Upvotes: 2

Related Questions