Node.js “错误”;“未定义bcrypt”;单击注册页面中的提交按钮后

Node.js “错误”;“未定义bcrypt”;单击注册页面中的提交按钮后,node.js,Node.js,我在node.js中设计了注册页面,但在单击注册表单中的提交按钮后,我发现以下错误: 发生了一些错误:引用错误:“未定义bcrypt” 我的用户模型如下: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = new Schema({ userName : {type:String,default:'',required:true}, first

我在node.js中设计了注册页面,但在单击注册表单中的提交按钮后,我发现以下错误:

发生了一些错误:引用错误:“未定义bcrypt”

我的用户模型如下:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({

    userName            : {type:String,default:'',required:true},
    firstName           : {type:String,default:''},
    lastName            : {type:String,default:''},
    email               : {type:String,default:''},
    mobileNumber        : {type:Number,default:''},
    password            : {type:String,default:''},
});

userSchema.pre('save', function(next) {
  var myuser = this;
  var SALT_FACTOR = 5;

  if (!myuser.isModified('password')) return next();

  bcrypt.genSalt(SALT_FACTOR, function(err, salt) {
    if (err) return next(err);

    bcrypt.hash(myuser.password, salt, null, function(err, hash) {
      if (err) return next(err);
      myuser.password = hash;
      next();
    });
  });
});

userSchema.methods.comparePassword = function(candidatePassword, cb) {
  bcrypt.compare(candidatePassword, this.password, function(err, isMatch) {
    if (err) return cb(err);
    cb(null, isMatch);
  });
};
module.exports = mongoose.model('myUser',userSchema);

您需要安装然后需要一个bcrypt库,它不是内置在节点中的,因此它是未定义的

有几种可用的,一种是用原生JS编写的,并且仍然保持。还有与C++ BCRIPT实现绑定的,它将运行得比纯JS实现快,但您可能会遇到;因此,如果您不知道如何解决这类问题,您可能希望坚持使用JS实现

要安装bcrypt.js,您需要使用npm:
npm安装bcryptjs

然后,将其与mongoose一起放在代码顶部:

var mongoose = require('mongoose');
var bcrypt = require('bcryptjs');

是的,我已经安装了bcryptjs,并将其包含在我的猫鼬中。
但是当我点击注册按钮时,它会生成一个随机密码,而不是我在填写注册表单时输入的密码。

首先在npm中使用以下命令安装bcrypt

`npm install --save bcrypt`
稍后使用以下命令在后端节点js服务中导入bcrypt模块:

const bcrypt=require('bcrypt')


然后使用bcrypt.hash()方法,我们可以加密消息或密码。

是的,似乎您没有在任何地方定义它。Node如何猜出你的意思?请看我的答案好吗?0否决票接受是我已经安装了bcryptjs并将其包含在我的mongoose中。但当我点击注册按钮时,它会生成一个随机密码,而不是我在填写注册表单时输入的密码。