You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular引入@eth-optimism/sdk后出现空白白屏问题求助

解决Angular中使用@eth-optimism/sdk导致白屏无报错的问题

1. 修复变量引用错误

你代码里存在变量名不匹配的问题:导入SDK时用的是optimism,但实例化时却调用了未定义的sdk变量,这会引发ReferenceError,在Angular生产模式下这类错误可能被静默处理,最终导致白屏。

修正后的代码:

import * as optimism from "@eth-optimism/sdk";

// ...

async send() {
    try {
        const signer = await getEthersSigner({
            chainId: 5,
        })

        // 使用导入的optimism变量替代未定义的sdk
        let crossChainMessenger = new optimism.CrossChainMessenger(
            {
                l1ChainId: 5,
                l2ChainId: 420,
                l1SignerOrProvider: signer,
                l2SignerOrProvider: new ethers.providers.JsonRpcProvider(
                    "https://goerli.optimism.io"
                ),
            }
        );
    } catch (err) {
        // 捕获并打印错误,方便排查问题
        console.error("初始化CrossChainMessenger失败:", err);
    }
}

2. 添加错误捕获逻辑

异步函数中未包裹try/catch会导致错误被吞噬,无法在控制台看到具体问题。必须在send方法中添加错误捕获,确保异常能被输出到控制台。

3. 配置Angular允许CommonJS依赖

@eth-optimism/sdk及其依赖(如ethers)属于CommonJS模块,Angular默认不会转译node_modules中的CommonJS模块,可能导致运行时错误。需要在angular.json中添加配置:

找到architect -> build -> options,新增allowedCommonJsDependencies字段:

"options": {
  // ...其他已有配置
  "allowedCommonJsDependencies": [
    "@eth-optimism/sdk",
    "ethers",
    "@eth-optimism/core-utils",
    "@eth-optimism/contracts"
  ]
}

4. 检查依赖版本兼容性

确保@eth-optimism/sdk与ethers的版本匹配,当前SDK通常要求ethers v5.x版本(v6版本存在API不兼容问题)。查看SDK的package.json确认依赖版本后,执行以下命令安装兼容版本:

npm install ethers@^5.7.2 @eth-optimism/sdk --save

5. 验证Signer有效性

确认getEthersSigner函数返回的是有效的ethers Signer实例,而非undefined或错误对象。可以在获取signer后添加日志验证:

const signer = await getEthersSigner({ chainId: 5 });
console.log("获取到的Signer:", signer);
if (!signer) {
    throw new Error("未获取到有效的Signer");
}

内容的提问来源于stack exchange,提问作者kadircan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 12:55:03