2017-09-08 5 views
0

J'ai créé ce testcase pour prouver que la méthode cat ne fonctionne pas pour moi en utilisant la bibliothèque javascript IPFS. Qu'est-ce que je fais mal ? La sortie de ma console ne tire rien de la fonction 'node.files.cat', c'est comme si ce callback (err, filestream) n'était pas du tout appelé. Je sais que mon multihash fonctionne un peu parce que si je le change, je reçois une erreur fatale. Cependant, en ce moment, il semble juste se bloquer et faire une pause après NODE READY.IPFS dans Javascript 'cat' la fonction ne fonctionne pas

const IPFS = require('ipfs') 
const path = require('path') 
const os = require('os') 
const fs = require('fs') 

console.log('ipfs test ') 


var mhash = "Qmc5LfkMVAhvzip2u2RjRBRhgVthtSokHsz4Y5bgaBCW2R"; 


// Create the IPFS node instance 
const node = new IPFS() 

node.on('ready',() => { 

    // Your node is now ready to use \o/ 


    console.log('NODE READY') 



/* 
THIS WORKS 
    var test_rstream = fs.createReadStream(path.join(__dirname, '.', '/public/sample_land_file.json')) 
    var wstream = fs.createWriteStream(os.tmpdir() + '/lobc_cache/'+'Qmc5LfkMVAhvzip2u2RjRBRhgVthtSokHsz4Y5bgaBCW2R'); 


     wstream.on('finish', function() { 
     console.log('Written ' + wstream.bytesWritten + ' ' + wstream.path); 
     test_rstream.close() 
     }); 

     test_rstream.pipe(wstream); 

*/ 


    node.files.cat("Qmc5LfkMVAhvzip2u2RjRBRhgVthtSokHsz4Y5bgaBCW2R", function (err, filestream) { 

      console.log('WHY ISNT THIS FIRING ') // i never see this logged 
     console.log(filestream) 

     console.log(os.tmpdir()) 


     if (!fs.existsSync(os.tmpdir() + '/lobc_cache')){ 
      fs.mkdirSync(os.tmpdir() + '/lobc_cache'); 
     } 

     var wstream = fs.createWriteStream(os.tmpdir() + '/lobc_cache/'+'Qmc5LfkMVAhvzip2u2RjRBRhgVthtSokHsz4Y5bgaBCW2R'); 



     result = ''; 


      wstream.on('finish', function() { 
      console.log('Written ' + wstream.bytesWritten + ' ' + wstream.path); 
      filestream.close() 
      }); 


       filestream.pipe(wstream); 

       // wstream.end(); 
    // file will be a stream containing the data of the file requested 
    }) 





    // stopping a node 
    node.stop(() => { 
    // node is now 'offline' 
    }) 
}) 


node.on('start',() => { 

    console.log('NODE START') 
}) 

Répondre

0

Cela ressemble à un bogue. Un moyen rapide de le résoudre consiste simplement à placer node.files.cat dans le rappel pour .on ('ready'). Il semble que bitswap abandonne les requêtes avant que le nœud ne soit en ligne.

Faites-moi savoir si cela fonctionne.