我正在尝试检索var散列以在另一个模块中使用它。但我有回调问题。我有错误“回调不是一个功能”。我使用回调因为我的变量哈希是未定义的,所以我猜这是异步的问题。
hash.js
var fs = require('fs');
var crypto = require('crypto');
var algorithm = 'sha256';
var hash = function(filename, callback){
var shasum = crypto.createHash(algorithm);
var s = fs.ReadStream(filename);
s.on('data', function(data) {
shasum.update(data)
})
s.on('end', function() {
var hash = shasum.digest('hex')
callback(hash);
})
}
exports.hash = hash;
app.js
app.post('/upload', upload.single('userfile'), function(req, res){
res.cookie('filename', req.file.originalname);
res.cookie('filesize', req.file.size);
var filename = __dirname +'/'+ req.file.path;
console.log(hash.hash(filename))
//res.cookie('hash', hash.hash(filename));
res.redirect('/hash')
})
答案 0 :(得分:0)
您的hash()
函数是使用此签名定义的:
var hash = function(filename, callback)
这意味着您需要将文件名和回调传递给它。但是,你只传递一个文件名:
console.log(hash.hash(filename))
正如您在实现中所看到的,回调不是可选的,并且是实际获得结果的唯一方法:
hash.hash(filename, function(result) {
console.log(result);
});