2

我想在 ipfs 上发布文件,但它显示错误。

这是我的代码...

const ipfsClient = require('ipfs-http-client');
const ipfs = ipfsClient({host: 'ipfs.infura.io', port: 5001, protocol: 
'https'});

function App() {
const [buffer, setBuffer] = useState();

const handleChange = (event) => {
  event.preventDefault();
  const file = event.target.files[0];
  const reader = new window.FileReader();
  reader.readAsArrayBuffer(file);
  reader.onloadend = () =>{
    setBuffer(reader.result);
  }

}

const handleSubmit = async(event) => {
    event.preventDefault();
    console.log('submitting...')
    await ipfs.add({buffer}, (error, result) => {
      console.log('ipfs results');
      if(error){
        console.error(error);
        return;
      }
    });
}


}

我在浏览器中收到此错误...

TypeError:ipfsClient 不是函数

4

2 回答 2

0

我对 ipfs 不熟悉,但我查看了官方文档,他们已经完成了第一行这样的操作:

const { CID } = require('ipfs-http-client')

这些括号是必不可少的

javascript变量名周围的{花括号}是什么意思

于 2021-11-11T04:27:20.643 回答
0

应该是一些突破性的变化。您所拥有的示例副本很可能是旧版本。如果您访问最新的自述文件,新版本应以以下方式启动:

import { create } from 'ipfs-http-client'
const client = create()
const client = create(new URL('http://127.0.0.1:5002'))
const { cid } = await client.add('Hello world!')

您可以通过指定版本号来回滚以使用旧版本@,即npm install ipfs-http-client@42.0.0。取而代之的npm install ipfs-http-client是始终拉取最新版本(现在为 53.X)。

也可以在“package.json”文件中查看您安装的版本,以查看您正在使用的版本并使用您需要的版本进行编辑,“删除 node_modules ”文件夹并重新运行npm install。但这需要你保存,这需要一个参数-s,所以运行是npm install -s ipfs-http-client

版本 42,示例代码应该是您正在使用的“https://github.com/ipfs/js-ipfs/tree/v42.0.0”。

版本 53(或官方 1.0 版本),如果您访问官方 github 站点,则会告诉您有一个重大更改;其中 ipfs-http-client 需要一个 create() 并且不能直接使用。

于 2021-11-11T04:44:52.080 回答