为什么我会遇到这个错误:“time.replaceAll is not a function”

时间:2020-12-27 20:51:33

标签: javascript node.js express

您好,我一直收到“time.replaceAll 不是函数”的错误消息,我不知道为什么,因为我在在线代码编辑器中尝试了 time.replaceAll 并且它起作用了。

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");
};

1 个答案:

答案 0 :(得分:2)

String.prototype.replaceAll 是一个非常新的特性,only recently 在 JS 环境中变得可用。如果你想在 Node 中使用它,要么升级到 Node 15(15.0.0 是最早支持它的 Node 版本),或者改用正则表达式:

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