【问题标题】:IPFS Angular11 ipfs-http-client new IpfsHttpClient = Error: export 'AbortController', MultiaddrIPFS Angular11 ipfs-http-client new IpfsHttpClient = 错误:导出“AbortController”,Multiaddr
【发布时间】:2021-11-26 02:16:11
【问题描述】:

您好,我对使用 Angular 的 ipsf-http-client 有疑问。返回时new IpfsHttpClient() 我缺少MultiaddranySignalAbortController 和其他出口。我也有错误:此表达式不可构造,(.../ipfs-http-client/types/src/index")' 有no construct signatures。请提示如何解决它或如何正确实现 ipsf-http - Angular 应用程序中的客户端

Angular CLI: 12.1.4
Node: 14.17.3
Package Manager: npm 6.14.13
OS: win32 x64
Python: 3.10

tsconfig 内部:

"skipLibCheck": true,
"target": "es2017",
"module": "es2020",
"lib": [
  "es2018",
  "dom",
  "DOM.Iterable",
  "es2015", 
  "es2015.iterable",
],
"paths" : {
  "crypto": ["./node_modules/crypto-browserify"],
  "stream": ["./node_modules/stream-browserify"],
  "assert": ["./node_modules/assert-plus"],
  "http": ["./node_modules/stream-http"],
  "https": ["./node_modules/https-browserify"],
  "os": ["./node_modules/os-browserify"],
},
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,

下面是主要的 ipfs 初始化令牌。

import { Injectable, InjectionToken, Inject } from '@angular/core';
import IpfsHttpClient from 'ipfs-http-client';

export const ipfsToken = new InjectionToken('The IPFS Token', {
  providedIn: 'root',
  factory: () => {
    try {
      return new IpfsHttpClient('ipfs.infura.io', '5001', {
        protocol: 'https'
      });
    } catch (err) {
      console.log('Error', err);
      throw new Error('Unable to access IPFS node daemon on Infura network');
    }
  }
});

我可以通过以下解决方案防止可构造错误,但我仍然缺少 Multiaddr、anySignal、AbortController 和其他导出。

import { Injectable, InjectionToken, Inject } from '@angular/core';
import IpfsHttpClient from 'ipfs-http-client';

export const ipfsToken = new InjectionToken('The IPFS Token', {
  providedIn: 'root',
  factory: () => {
    let contextClass : any = IpfsHttpClient;
    let context: IpfsHttpClient.IPFSHTTPClient = new contextClass('ipfs.infura.io', '5001', {
        protocol: 'https'
      });

    try {
        console.log("IPFS");
        
      return context;
    } catch (err) {
      console.log('Error', err);
      throw new Error('Unable to access IPFS node daemon on Infura network');
    }
  }
});

【问题讨论】:

    标签: javascript angular typescript ipfs


    【解决方案1】:

    在我的 ionic 项目中遇到烦人的 MultiaddranySignalAbortController not found 错误 2 天后,我注意到我使用了不正确的 ipfs 包版本。详细说明:

    我使用:npm install --save ipfs-http-client 安装了 ipfsofficial package documentation 在安装部分描述了这个命令。该命令安装了 ipfs 版本 54.0.2(我在项目工作目录的 package.json 文件中签出)。

    official package documentation(查看右上角)中的官方 npm 命令是npm i ipfs-http-client@52.0.4-rc.4

    删除package.json ipfs 部分和node_module 文件夹后,我运行npm i ipfs-http-client@52.0.4-rc.4 并使用npm install 重新安装所有软件包。这次成功了,没有任何错误。

    PS:我认为 npm manager 中的 release 版本被误认为是开发版本。

    【讨论】:

    • 哈哈,所以应该做一个救生员徽章....id给你一个:)
    猜你喜欢
    • 2019-12-16
    • 2018-07-07
    • 2021-06-30
    • 2021-03-12
    • 2019-02-03
    • 2022-10-05
    • 2023-01-30
    • 2019-03-13
    • 1970-01-01
    相关资源
    最近更新 更多