您好,我一直收到“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");
};
答案 0 :(得分:2)
String.prototype.replaceAll
是一个非常新的特性,only recently 在 JS 环境中变得可用。如果你想在 Node 中使用它,要么升级到 Node 15(15.0.0 是最早支持它的 Node 版本),或者改用正则表达式:
time.replace(/:/g, '')