如何在启动 js-ipfs 节点时启动 api 网关?

how to start the api gateway when starting a js-ipfs node?

当在 node.js 应用程序中使用以下代码以编程方式启动 js-ipfs 节点时,它会启动 swarm,允许添加文件并查询它们.

// code from the docs: https://github.com/ipfs/js-ipfs#use-in-nodejs

const IPFS = require('ipfs')
const node = new IPFS()

node.on('ready', () => {
  // Ready to use!
})

但是 API 和网关不可用,这意味着 web-ui 无法检查 repo 内容。如何使用 ipfs npm 包启动 API 网关和 ipfs swarm?

HTTP API 和网关的 TCP 端口在 运行 js-ipfs 作为守护程序时打开(Node.js):

$ jsipfs daemon
(...)
Gateway (read only) listening on /ip4/127.0.0.1/tcp/9090/http
Web UI available at http://127.0.0.1:5002/webui
Daemon is ready

JavaScript 运行 在常规网络浏览器中无法打开 TCP 端口,因此网页上的 js-ipfs 运行 不会公开 HTTP API 和网关。

您需要使用 programmatic interface 与其互动。

找到答案,张贴在这里以帮助任何寻找类似信息的人。

API 网关在 ipfs 中作为 http 模块可用,可以在 ipfs 节点启动时调用,如下所示:

const IPFS = require('ipfs')
const node = new IPFS()

node.on('ready', () => {
   // start the API gateway
    const Gateway = require('ipfs/src/http');
    const gateway = new Gateway(node);
    return gateway.start();
})

API 和网关将侦听在 new IPFS() 中使用的配置中指定的端口,可以从 repo/config 文件位置编辑或以编程方式提供,如:

  "Addresses": {
    "API": "/ip4/127.0.0.1/tcp/5001",
    "Gateway": "/ip4/127.0.0.1/tcp/8080"
  }