網站搜尋

在 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