मैं इसे किसी अन्य मॉड्यूल में उपयोग करने के लिए एक var हैश पुनर्प्राप्त करने का प्रयास कर रहा हूं। लेकिन मुझे कॉलबैक में समस्या है। मुझे त्रुटि है "कॉलबैक एक फ़ंक्शन नहीं है"। मैं कॉलबैक का उपयोग करता हूं क्योंकि मेरा चर हैश अपरिभाषित है, इसलिए मुझे लगता है कि यह एसिंक्रोनस की समस्या है।

हैश.जेएस

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')
})
-1
Lock 18 नवम्बर 2017, 10:11

1 उत्तर

सबसे बढ़िया उत्तर

आपका hash() फ़ंक्शन इस हस्ताक्षर के साथ परिभाषित किया गया है:

var hash = function(filename, callback)

इसका मतलब है कि आपको इसे एक फ़ाइल नाम और कॉलबैक दोनों पास करने की आवश्यकता है। लेकिन, आप इसे केवल एक फ़ाइल नाम पास कर रहे हैं:

console.log(hash.hash(filename))

जैसा कि आप कार्यान्वयन में देख सकते हैं, कॉलबैक वैकल्पिक नहीं है और वास्तव में इस तरह से परिणाम प्राप्त करने का एकमात्र तरीका है:

hash.hash(filename, function(result) {
    console.log(result);
});
0
jfriend00 18 नवम्बर 2017, 11:36