javascript - IPFS Angular11 ipfs-http-client new IpfsHttpClient=Fel: export 'AbortController', Multiaddr


Hej, jag har ett problem med ipsf-http-client när jag använder Angular. Vid retur av new IpfsHttpClient() saknas Multiaddr, anySignal, AbortController och andra exports. Jag får också felet: Detta uttryck kan inte konstrueras, (.../ipfs-http-client/types/src/index")' har inga konstruktionssignaturer. Vänligen ge tips om hur man löser det eller hur man korrekt implementerar ipsf-http-client i en Angular-applikation.

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

inuti 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,

Nedan är huvud-IPFS-initierings-token.

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');
    }
  }
});

Jag kan förhindra konstruktorfel med lösningen nedan, men jag har fortfarande saknade Multiaddr, anySignal, AbortController och andra exporteringar.

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');
    }
  }
});

Svar #1

Efter 2 dagar av att få det irriterande Multiaddr, anySignal och AbortController inte hittades-felet i mitt Ionic-projekt, märkte jag att jag använde fel ipfs paketversion. För att förklara:

Jag installerade ipfs med: npm install --save ipfs-http-client . Den officiella paketdokumentationen beskriver detta kommando i avsnittet Installation. Kommandot installerade ipfs version 54.0.2 (jag kontrollerade i package.json-filen i projektets arbetskatalog).

Det officiella npm-kommandot i den officiella pakethandboken (kolla längst upp till höger) är npm i [email .

Efter att ha raderat avsnittet ipfs i package.json och mappen node_module körde jag npm i [email och installerade om alla paket med npm install. Den här gången fungerade det utan några fel.

PS: Jag tror att utgåveversionen i npm-hanteraren har förväxlats med en utvecklingsversion.

Relaterade artiklar