我无法使用 ipfs

I am not able to use ipfs

我想在 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 is not a function

我对 ipfs 不熟悉,但我查看了官方文档,第一行是这样的:

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

这些括号是必不可少的

What do {curly braces} around javascript variable name mean

应该是一些重大变化。您拥有的示例副本很可能是旧版本。如果您访问最新的自述文件,新版本应启动:

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() 而不能直接使用。