使用crypto-js生成重置密码令牌遇TypeError问题求助
解决TypeError: crypto.randomBytes is not a function问题
问题原因
你混淆了Node.js内置crypto模块和第三方库crypto-js:
randomBytes、createHash是Node.js内置crypto模块的原生API,crypto-js库并不提供这些方法,因此调用时会触发报错。
解决方案
替换导入的模块
将导入crypto-js的代码换成Node.js内置的crypto模块:import crypto from 'crypto'; // 替换原有的import crypto from 'crypto-js'Node.js v16.16.0自带内置crypto模块,无需额外安装依赖。
保留核心业务逻辑
你的哈希生成逻辑完全符合内置crypto模块的用法,无需修改。修正后的完整代码如下:// 重置密码相关代码 import crypto from 'crypto'; userSchema.methods.getResetToken = function () { // 生成令牌 const resetToken = crypto.randomBytes(20).toString('hex'); // 哈希处理并添加到userSchema this.resetPasswordToken = crypto .createHash("sha256") .update(resetToken) .digest("hex"); this.resetPasswordTime = Date.now() + 15 * 60 * 1000; return resetToken; };
内容的提问来源于stack exchange,提问作者Pavitar Sharma
相关产品推荐
相关产品推荐

