使用 bcrypt.hash 时出现未知错误
Unknown error when using bcrypt.hash
我有这个 pre
mongoose 中间件来保存密码,我以前使用同步实现,现在我正在做异步实现作为 mongoose 中间件:
schema.pre('save', function(next) {
var user = this;
var SALT_WORK_FACTOR = 5;
if (!user.isModified('local.password')) return next();
bcrypt.genSalt(SALT_WORK_FACTOR, function(err, salt) {
if (err) return next(err);
bcrypt.hash(user.local.password, salt, function(err, hash) {
if (err) return next(err);
user.local.password = hash;
next();
});
});
});
代码在到达 bcrypt.hash
时抛出一个未知错误,尽管之前的错误是 null
。如果我使用类似 stackup
的东西,错误如下所示:
E:\Do\login\node_modules\stackup\index.js:32
error.stack = activeTrace.toString(error.stack);
^
TypeError: Cannot assign to read only property 'stack' of No callback function w
as given.
at AsyncListener.error (E:\Do\login\node_modules\stackup\index.js:32:19)
at asyncCatcher (E:\Do\login\node_modules\stackup\node_modules\async-listene
r\glue.js:123:26)
at process._asyncFatalException [as _fatalException] (E:\Do\login\node_modul
es\stackup\node_modules\async-listener\glue.js:211:14)
您正在使用 bcrypt-nodejs
,它需要 两个 回调:
hash(data, salt, progress, cb)
您只提供了一次,因此 cb
在 bcrypt-nodejs
命中时未定义。
我有这个 pre
mongoose 中间件来保存密码,我以前使用同步实现,现在我正在做异步实现作为 mongoose 中间件:
schema.pre('save', function(next) {
var user = this;
var SALT_WORK_FACTOR = 5;
if (!user.isModified('local.password')) return next();
bcrypt.genSalt(SALT_WORK_FACTOR, function(err, salt) {
if (err) return next(err);
bcrypt.hash(user.local.password, salt, function(err, hash) {
if (err) return next(err);
user.local.password = hash;
next();
});
});
});
代码在到达 bcrypt.hash
时抛出一个未知错误,尽管之前的错误是 null
。如果我使用类似 stackup
的东西,错误如下所示:
E:\Do\login\node_modules\stackup\index.js:32
error.stack = activeTrace.toString(error.stack);
^
TypeError: Cannot assign to read only property 'stack' of No callback function w
as given.
at AsyncListener.error (E:\Do\login\node_modules\stackup\index.js:32:19)
at asyncCatcher (E:\Do\login\node_modules\stackup\node_modules\async-listene
r\glue.js:123:26)
at process._asyncFatalException [as _fatalException] (E:\Do\login\node_modul
es\stackup\node_modules\async-listener\glue.js:211:14)
您正在使用 bcrypt-nodejs
,它需要 两个 回调:
hash(data, salt, progress, cb)
您只提供了一次,因此 cb
在 bcrypt-nodejs
命中时未定义。