如何在Deno项目的deps.ts文件中从esm.sh导入web3?
解决方案
1. 调整deps.ts导入配置
web3依赖Node.js内置的crypto模块,默认从esm.sh导入不会自动加载Deno兼容的垫片,需要在导入链接后添加?node参数触发自动适配,同时锁死稳定兼容的web3版本:
// ./deps.ts export { default as Web3 } from "https://esm.sh/web3@1.8.2?node";
2. 正确导入并实例化web3
web3包仅提供默认导出的构造函数,没有命名导出的web3对象,需要导入后手动实例化:
// index.ts import { Web3 } from "./deps.ts"; // 传入你的RPC节点地址完成实例化,本地节点默认地址为http://localhost:8545 const web3 = new Web3("https://rpc.ankr.com/eth"); // 测试验证 console.log("web3版本:", web3.version);
3. 运行验证
使用你原有命令即可正常运行:
deno run --allow-all --unstable index.ts
报错原因说明
- TS2614错误:web3包未提供名为
web3的命名导出,仅存在默认导出的构造函数,不能用解构导入语法 - Rand读取错误:web3依赖的加密库需要调用Node.js内置crypto模块的随机数接口,Deno原生未全局暴露该模块,加
?node参数后esm.sh会自动替换为兼容Deno的垫片实现,解决依赖缺失问题
内容的提问来源于stack exchange,提问作者chovy
相关产品推荐
相关产品推荐

