
区块链Web3【免费下载链接】ethers.jsComplete Ethereum library and wallet implementation in JavaScript.项目地址https://gitcode.com/gh_mirrors/et/ethers.js点击查看免费下载本指南围绕 ethers.js 仓库内testcases/test-env/angular这一 Angular CLI 测试工程展开说明如何启动开发服务器、生成组件、执行构建、运行单元测试与端到端测试并深入剖析该工程在仓库中的真实定位——验证 ethers v6 在 Angular 15webpack 构建链下能否正常编译与运行。读完本文你将掌握这套测试环境的完整操作命令、底层配置文件含义以及ethers.BrowserProvider对接 MetaMaskEIP-1193的源码级原理。一、环境定位为什么 ethers.js 仓库里会有一个 Angular 工程testcases/test-env/angular是 ethers.js 仓库自带的浏览器端集成测试载体用于确认 ethers v6 能够在主流前端工程化框架Angular中正常安装、打包并运行。它由 Angular CLI 15.2.4 生成但并非空壳模板——其package.json将ethers: ^6.3.0声明为直接依赖见 package.json并在src/app/app.component.ts中实际导入并调用了 ethers 的BrowserProvider。整个测试工程的目录结构如下testcases/test-env/angular/ ├── src/ │ ├── app/ │ │ ├── app.component.ts # 核心验证逻辑连接 MetaMask 并读取网络 │ │ ├── app.component.html # 页面模板Connect Find Network 按钮 │ │ ├── app.component.css │ │ ├── app.component.spec.ts # 单元测试 │ │ └── app.module.ts │ ├── index.html │ ├── main.ts # 引导入口 │ └── styles.css ├── angular.json # Angular 工程与构建配置 ├── package.json # 依赖与脚本 ├── tsconfig.json / tsconfig.app.json / tsconfig.spec.json └── README.md # 官方 CLI 使用说明本文主体该环境与仓库中 test-tsc验证 TypeScript 编译形成互补前者验证浏览器运行时集成后者验证类型系统层面的兼容性。二、启动开发服务器ng serve原文档给出的第一条命令是ng serve运行后 Angular CLI 会启动本地开发服务器默认监听http://localhost:4200/。它的关键特性是热重载修改工程内任意源文件如src/app/app.component.ts或src/app/app.component.html后页面会自动刷新无需手动重启。在 ethers.js 的集成测试场景中ng serve的实际作用是提供一个可交互的浏览器页面打开http://localhost:4200/后页面会渲染出 “Ethers v6 get network test” 标题和一个 “Connect Find Network” 按钮见 app.component.html。点击按钮即可验证 ethers v6 与浏览器注入的钱包如 MetaMask能否正常协作。开发服务器的行为由 angular.json 中的serve节点控制默认使用development配置对应test:build:development该配置关闭了buildOptimizer与optimization、开启sourceMap与namedChunks便于调试时追踪 ethers 的调用链。若需以生产模式预览可执行ng serve --configuration production三、代码脚手架ng generate原文档说明可用ng generate快速生成新代码单元ng generate component component-name完整支持的单元类型包括ng generate directive|pipe|service|class|guard|interface|enum|module例如ng generate service web3会生成一个可注入的服务类用于封装 ethers 相关调用。对于当前测试环境而言脚手架的意义在于验证在 Angular 的 DI依赖注入体系与模块系统中import 自 ethers 的模块能否被正常解析。实际上该工程仅保留了一个根组件AppComponent注册于 app.module.ts 的declarations中并在其中直接import { ethers } from ethers——这正是对 webpack 打包 ethers 包的能力测试。四、生产构建ng build执行ng build构建产物将输出到dist/目录具体为dist/test见angular.json的outputPath配置。angular.json中 production 配置还包含两个预算约束budgetsinitial类型警告阈值 500kb错误阈值 1mbanyComponentStyle类型警告阈值 2kb错误阈值 4kb。若 ethers 包体积导致初始包超过预算构建会给出警告甚至报错——这是 Angular CLI 对依赖体积的默认体检。当前package.json提供了watch脚本可增量构建npm run watch # 等价于 ng build --watch --configuration development从源码视角看这个构建步骤真正要验证的是ethers v6 的 ESM/CJS 发布形态能否被 Angular 15 的angular-devkit/build-angular:browserwebpack 链正确处理包括 polyfillzone.js加载顺序、tsconfig.app.json的编译目标等。五、单元测试ng test原文档说明ng test该命令通过 Karma 执行单元测试。工程默认自带 Jasmine 测试框架jasmine-core、karma-jasmine等见 package.json 的 devDependencies并配套karma-chrome-launcher在 Chrome 中运行用例。测试配置同样在angular.json的test节点中使用tsconfig.spec.json作为 TypeScript 配置并额外加载了zone.js/testing测试专用 polyfill。工程自带的示例测试为src/app/app.component.spec.ts用于校验AppComponent的创建与title属性。在实践中可将 ethers 的地址校验、keccak256 哈希等纯函数用例迁移到该测试体系中验证 ethers 在 Angular 的测试环境zone.js Jasmine中行为一致。六、端到端测试ng e2e原文档指出ng e2e执行端到端测试需先自行安装一个实现了 E2E 能力的测试包如 Cypress 或 Protractor 的替代方案。在 Angular 15 中CLI 默认不再捆绑 E2E 运行器因此直接运行ng e2e前必须手动补充对应依赖。从 ethers.js 仓库的角度看这一环节适合用来验证完整链路打开http://localhost:4200/→ 点击 “Connect Find Network” → 断言页面展示的network.name如homestead符合预期。七、进一步帮助ng help若需了解 Angular CLI 的更多命令与参数可执行ng help或在项目内使用npm run ng -- command透传任意 CLI 指令package.json中已定义ng: ng脚本。八、核心验证逻辑BrowserProvider 与 MetaMask 的源码级对照该测试工程真正承载的技术验证点在 app.component.ts 的connect()方法中代码注释引用了 ethers.js issue #3910。其逻辑分两条路径路径一MetaMask 未安装只读模式if (window.ethereum null) { console.log(MetaMask not installed; using read-only defaults); }此时无法获取注入式 provider工程退回只读默认行为。路径二连接 MetaMaskEIP-1193const provider new ethers.BrowserProvider(window.ethereum); const accounts await window.ethereum.request({ method: eth_requestAccounts, }); this.network await provider.getNetwork();页面模板随后通过*ngIf指令渲染network.name将连接结果直观呈现。对照 ethers v6 源码 provider-browser.ts可以看到BrowserProvider的两个关键实现细节强制禁用批处理构造函数中Object.assign传入batchMaxCount: 1并在_send方法中assertArgument(!Array.isArray(payload), EIP-1193 does not support batch request, ...)——因为 EIP-1193 协议不支持 JSON-RPC 批处理请求每次调用只发单个 payload。错误码映射getRpcError将 EIP-1193 错误码 4001用户拒绝改写为ethers-user-denied、4200不支持的方法改写为ethers-unsupported确保上层异常信息可读。此外BrowserProvider还提供getSigner()获取由 MetaMask 私钥托管的签名器以及静态方法BrowserProvider.discover()基于 EIP-6963 钱包发现机制默认 300ms 探测超时用于多钱包场景。九、依赖与版本清单速览该测试环境的依赖版本见 package.json可作为复现环境的重要参考类别依赖版本范围核心验证对象ethers^6.3.0框架angular/core / common / compiler / forms / platform-browser / router / animations^15.2.0运行时rxjs ~7.8.0、zone.js ~0.12.0、tslib ^2.3.0—CLI 工具链angular/cli、angular-devkit/build-angular、angular/compiler-cli~15.2.x测试jasmine-core、karma ~6.4.0、karma-chrome-launcher、karma-jasmine、karma-coverage—语言typescript~4.9.4值得注意的兼容性事实Angular 15 使用 TypeScript ~4.9而 ethers v6 自身要求 TypeScript 4.9 以上即可该环境将二者锁定在一起正是为了在真实工程约束下验证 ethers 的类型声明与打包结果。若需在本地复现可在该目录下执行npm install后按上述章节命令逐一运行仓库为只读安装与运行均在本地副本进行。结语testcases/test-env/angular/README.md虽是一份标准的 Angular CLI 说明但在 ethers.js 仓库语境下它实际定义了一套可执行的浏览器端集成测试流程ng serve提供交互验证入口、ng build检验 webpack 打包兼容性、ng test与ng e2e分别覆盖单元与端到端行为而app.component.ts与provider-browser.ts则从应用层与库源码两个层面共同印证了 ethers v6 通过 EIP-1193 与浏览器钱包协作的完整链路。对于希望在自己 Angular 工程中接入 ethers 的开发者这套环境既是官方验证样本也是可直接参照的最小可运行实现。赞分享区块链Web3【免费下载链接】ethers.jsComplete Ethereum library and wallet implementation in JavaScript.项目地址https://gitcode.com/gh_mirrors/et/ethers.js点击查看免费下载相关推荐Cypress 仓库中 Angular CLI 21 未配置工程的完整工作流从 ng serve 到 ng e2e 实战解析Cypress 仓库中 Angular CLI 21 未配置工程的完整工作流从 ng serve 到 ng e2e 实战解析 Angular CLI 是创建、测试质量保障前端接口测试为什么选择all-MiniLM-L6-v1-openmindNPU加速的句子向量生成工具对比评测为什么选择all MiniLM L6 v1 openmindNPU加速的句子向量生成工具对比评测 在当今人工智能快速发展的时代 句子向量生成工具 已成为自然Airbyte destination-snowflake 连接器集成测试环境搭建指南从仓库初始化到错误场景模拟Airbyte destination snowflake 连接器集成测试环境搭建指南从仓库初始化到错误场景模拟 本篇指南以 Airbyte 开源仓库中 de数据工程数据集成ETL后端大数据上一篇Windhawk让Windows程序定制变得如此简单下一篇如何下载 MPD/M3U8/ISM 流媒体并录制直播N_m3u8DL-RE 从入门到调参实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考