Speedrun Ethereum Tokenization Checkpoint 4 - Vercel 前端构建依赖修复
Checkpoint 4:Vercel 前端构建缺少 @x402/* 依赖
挑战地址:https://speedrunethereum.com/challenge/tokenization
本文是 Speedrun Ethereum Tokenization 系列第三篇,记录 Checkpoint 4 发布前端时的 Vercel 构建依赖问题。
隐私说明:本文不包含真实钱包地址、交易哈希、部署 URL、团队名、项目名或本地绝对路径。
系列目录
- 索引:完整排错路线
- 上一篇:Checkpoint 3 - Mint NFTs
- 当前:Checkpoint 4 - Ship
问题:Vercel 构建缺少 @x402/* 依赖
当前 Challenge 步骤:Checkpoint 4 - Ship
合约和 Mint 流程已经完成,现在正在使用 Vercel 发布前端,为最终提交挑战准备公开网址。
1. Vercel 命令
在项目根目录执行:
1 | yarn vercel --prod |
Vercel CLI 成功完成登录和项目链接:
1 | Linked to your-team/your-project |
也成功创建了一个 Production Deployment。部署 URL 和团队、项目信息在本文中省略。
但构建最后失败:
1 | Error: Command "yarn run build" exited with 1 |
2. 查看 Vercel 构建日志
终端只显示构建失败,没有显示具体错误。
使用 Vercel CLI 查看完整日志:
1 | ./node_modules/.bin/vercel inspect \ |
关键错误如下:
1 | Module not found: Can't resolve '@x402/core/client' |
因此这次 Vercel 失败不是 NFT 合约问题,也不是前端组件代码问题,而是依赖安装不完整。
3. 定位依赖链
缺失模块的依赖链如下:
1 | @rainbow-me/rainbowkit |
项目根目录的 package.json 中有:
1 | "resolutions": { |
在当前安装结果中:
1 | @base-org/account 2.4.0 |
@coinbase/cdp-sdk@1.52.0 的内部代码会动态导入:
1 | import("@x402/core/client") |
但是这些 @x402/* 包并没有被完整地声明和安装。
本地开发环境可能因为之前的 node_modules 残留而看不到问题;Vercel 每次都会执行全新的:
1 | yarn install |
所以缺失依赖会在 Vercel 构建时暴露出来。
4. 根因总结
1 | Vercel 全新安装依赖 |
这与合约、ERC-721、Mint 或 MetaMask 都没有关系。
5. 解决方案:显式安装缺失依赖
进入项目根目录:
1 | cd "/path/to/challenge-tokenization" |
执行:
1 | yarn workspace @se-2/nextjs add \ |
成功后,packages/nextjs/package.json 会新增:
1 | "@x402/core": "2.28.0", |
根目录 yarn.lock 也会对应增加这些包。
为什么选择 2.28.0:
- 它包含
@x402/core/client - 它包含
@x402/evm/exact/client - 它包含
@x402/evm/upto/client - 它包含
@x402/svm/exact/client - 这些路径正好对应
cdp-sdk的动态导入
安装后验证导入:
1 | node --input-type=module -e ' |
预期输出:
1 | all x402 imports succeeded |
6. 在本地验证生产构建
不要直接重新部署,先运行与 Vercel 相同的生产构建:
1 | yarn next:build |
这次构建成功:
1 | ✓ Compiled successfully |
构建过程中仍会看到一个非致命警告:
1 | useScaffoldEventHistory is deprecated |
这个警告不会导致构建失败,也不影响本次挑战提交。
7. 重新发布到 Vercel
本地构建通过后,再执行:
1 | yarn vercel --prod |
如果 Vercel 项目已经链接过,CLI 可能会直接进入部署。若再次询问项目设置,选择当前已经创建的:
1 | your-project |
部署完成后,Vercel 会给出 Production URL。将该网址提交到 Speedrun Ethereum 挑战页面即可。
8. 检查清单
发布前确认:
1 | packages/nextjs/package.json 中有 @x402/core |
然后执行:
1 | yarn vercel --prod |
