1

我有一个在 localhost 上运行的 ipfs 守护进程。在创建/tmp/afile.txt. 我无法访问该文件。代码和错误如下。我正在使用https://www.npmjs.com/package/ipfs-api

const fs = require("fs");

let ipfs = require('ipfs-api')({host: "localhost", port: 5001, protocol: "http"});
let fileStream = fs.createReadStream("/tmp/afile.txt");
ipfs.files.add(fileStream, function (err, files) {
  ipfs.files.cat(files[0].hash, function (err, file) {
    if(err) throw err;
    console.log(file);
  });
})

输出:

Error: this dag node is a directory
   at parseError (/Users/amarshanand/InfoStore/node_modules/ipfs-api/src/utils/send-request.js:16:17)
   at ClientRequest.<anonymous> (/Users/amarshanand/InfoStore/node_modules/ipfs-api/src/utils/send-request.js:39:14)

编辑:我通过首先读取文件并从中创建一个缓冲区来使其工作,但不使用 ReadStream。仍在等待答案。

const fs = require("fs");

let ipfs = require('ipfs-api')({host: "localhost", port: 5001, protocol: "http"});
let cont = fs.readFileSync("/tmp/afile.txt");
cont = new Buffer(cont);
ipfs.add(cont, function (err, files) {
  if(err) throw err;
  ipfs.files.cat(files[0].hash, function (err, file) {
    if(err) throw err;
    console.log(file.toString());
  });
})
4

1 回答 1

0

您正在尝试对 /tmp 的哈希执行 .cat。如果您对该文件数组(在 files.cat 之前的console.log(files))执行console.log,您可以快速了解发生了什么。

要解决您的问题,您需要指向数组的正确元素,在您的情况下它将是一个。因此,您的代码将适用于:

  ipfs.files.cat(files[1].hash, function (err, file) {
    if(err) throw err;
    console.log(file);
  });

请让我知道这对你有没有用 :)

于 2018-02-21T10:04:43.253 回答