You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用crypto-js生成重置密码令牌遇TypeError问题求助

解决TypeError: crypto.randomBytes is not a function问题

问题原因

你混淆了Node.js内置crypto模块和第三方库crypto-js:

  • randomBytes、createHash是Node.js内置crypto模块的原生API,crypto-js库并不提供这些方法,因此调用时会触发报错。

解决方案

  1. 替换导入的模块
    将导入crypto-js的代码换成Node.js内置的crypto模块:

    import crypto from 'crypto'; // 替换原有的import crypto from 'crypto-js'
    

    Node.js v16.16.0自带内置crypto模块,无需额外安装依赖。

  2. 保留核心业务逻辑
    你的哈希生成逻辑完全符合内置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 22:57:20