kan inte komma åt ethers.js-leverantörer när man använder import-satsen i TypeScript


Jag kör TypeScript med ts-node och försöker använda ethers.js-provider:

import { ethers } from "ethers";
const provider = new ethers.providers.JsonRpcProvider(url);

det får följande fel:

TSError: ⨯ Kan inte kompilera TypeScript: - fel TS2339: Egenskapen 'providers' finns inte på typen 'typeof import

Koden fungerar med:

const ethers = require("ethers");

men jag behöver es6-format för att köra skriptet eftersom min andra modul körs på es6, annars måste jag konvertera alla andra beroenden till att använda "require"-satsen, vilket är för mycket.

ethers.js-dokumentationen säger att det kan köras på es6. Är det för att jag använder ts-node?

Svar #1

enligt detta ethers.js stängda problem är detta fixat av

utför :

const provider = new ethers.JsonRpcProvider();

istället

Svar #2

FreeCodeCamp Solidity-kursutvecklare

I Ethers v6 ersattes ethers.provider* med ethers.*:

Förutom att alla ethers.providers.* har flyttats till ethers.*, är den största förändringen som utvecklare behöver ha i åtanke att Web3Provider (som historiskt användes för att omsluta link-web3-leverantörer) nu kallas BrowserProvider och är utformad för att omsluta EIP-1193-leverantörer, vilket är standarden som både modern Web3.js och inbäddade leverantörer erbjuder.

Här är GitHub-ärendet som frågar om detta: https://github.com/ethers-io/ethers.js/issues/3794

Här är länken till migrationsguiden: https://docs.ethers.org/v6/migrating/#migrate-providers