Next.js 14服务端调用Alchemy API出现Referrer无效URL错误
解决Next.js 14服务端调用Alchemy API的Referrer错误
这个错误的核心原因是:Alchemy SDK在服务端环境下默认设置的referrer值为"client",而Node.js环境中Next.js依赖的undici(Fetch实现)不接受该值作为合法URL,导致构造Request时抛出异常。
解决方案
修改Alchemy的初始化配置,通过fetchOptions手动设置合法的referrer或禁用referrer发送:
import { Alchemy, Network } from "alchemy-sdk"; const settings = { apiKey: "your-api-key", // 建议存到环境变量中,比如process.env.ALCHEMY_API_KEY network: Network.ETH_MAINNET, // 添加fetchOptions配置修复referrer问题 fetchOptions: { // 方案1:设置为空字符串,不发送referrer referrer: "", // 或方案2:设置referrerPolicy为no-referrer,效果一致 // referrerPolicy: "no-referrer" }, }; // 服务端组件可直接异步调用(无需useEffect) async function ServerComponent() { const alchemy = new Alchemy(settings); const tokenBalances = await alchemy.core.getTokenBalances('0x2EeEa57cD51DF77163Fae7A056053f402d8E17CB'); return ( <div> <pre>{JSON.stringify(tokenBalances, null, 2)}</pre> </div> ); } export default ServerComponent;
额外注意
- 服务端组件无需使用
useEffect,可直接编写异步代码等待API响应。 - 不要硬编码API密钥,建议存储在
.env.local文件中,通过process.env.ALCHEMY_API_KEY读取,避免密钥泄露。
内容的提问来源于stack exchange,提问作者Quốc Cường
相关产品推荐
相关产品推荐

