使用TypeScript+ts-node导入ethers.js时无法访问providers问题咨询
问题解决:ES6导入ethers.js时出现TS2339错误
核心原因
不是ts-node的问题,主要是ethers.js版本差异或TypeScript配置未匹配ES模块规则导致的。
解决方案
1. 适配ethers.js v6+版本(推荐)
ethers.js从v6开始重构了模块结构,providers下的类已直接移到主ethers对象中,无需通过ethers.providers访问:
import { ethers } from "ethers"; const provider = new ethers.JsonRpcProvider(url);
2. 若使用ethers.js v5版本
v5的ES模块导入需要调整写法,同时确保TS配置正确:
- 修改导入语句:
// 两种写法二选一 import ethers from "ethers"; // 或 import * as ethers from "ethers";
- 调整
tsconfig.json关键配置:
{ "compilerOptions": { "module": "ESNext", "moduleResolution": "node16", "allowSyntheticDefaultImports": true } }
3. 确保ts-node正确处理ES模块
如果上述配置后仍有问题,运行ts-node时添加--esm参数强制启用ES模块支持:
ts-node --esm your-script.ts
或在项目根目录的package.json中添加:
{ "type": "module" }
内容的提问来源于stack exchange,提问作者ethereal1m
相关产品推荐
相关产品推荐

