Node.js “错误”;“未定义bcrypt”;单击注册页面中的提交按钮后
我在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
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中。但当我点击注册按钮时,它会生成一个随机密码,而不是我在填写注册表单时输入的密码。