在 TypeScript 中使用 import 語句時無法訪問 ethers.js 提供者
我正在使用 ts-node 運行 TypeScript,並嘗試使用 ethers.js 的提供者:
import { ethers } from "ethers";
const provider = new ethers.providers.JsonRpcProvider(url);
它出現以下錯誤:
TSError:⨯ 無法編譯 TypeScript:- 錯誤 TS2339:屬性 'providers' 在類型 'typeof import' 上不存在
該程式碼運作方式如下:
const ethers = require("ethers");
但我需要 ES6 格式來運行這個腳本,因為我的其他模組運行在 ES6,否則我必須將所有其他依賴轉換為使用 "require" 語句,這太麻煩了。
ethers.js 文件說它可以在 es6 上運行。是因為我使用 ts-node 嗎?
答案#1
根據這個 ethers.js 已關閉的問題,這已被修復
正在執行:
const provider = new ethers.JsonRpcProvider();
取而代之
答案#2
FreeCodeCamp Solidity 課程開發者
在 Ethers v6 中,ethers.provider* 被 ethers.* 取代:
除了所有 ethers.providers.* 被移動到 ethers.* 之外,開發者需要記住的最大變化是,Web3Provider(過去用於封裝 link-web3 提供者)現在被稱為 BrowserProvider,它被設計用來封裝 EIP-1193 提供者,這是現代 Web3.js 和注入式提供者都提供的標準。
這裡是詢問這個問題的 GitHub issue: https://github.com/ethers-io/ethers.js/issues/3794
這裡是遷移指南的連結:https://docs.ethers.org/v6/migrating/#migrate-providers
