使用Moralis Stream脚本创建监听钱包原生币交易流无响应的问题求助
Moralis Stream脚本创建监听钱包原生币交易流无响应的问题求助
兄弟,我之前也踩过Moralis脚本创建Stream没触发webhook的坑,咱们一步步排查解决:
首先检查最容易忽略的配置细节
Webhook地址是否完整
你贴的index.js里webhookUrl看起来没写完("https://15ca-103-105-211-114.ngrok-free.app/web..."),必须确保是完整的接口路径,比如"https://15ca-103-105-211-114.ngrok-free.app/webhook",路径错了Moralis根本发不到你的服务。Stream配置参数是否齐全
要监听原生币交易,你的option对象必须包含必要的触发条件,比如指定链、监听地址、开启原生交易监听,示例如下:const option = { webhookUrl: "https://15ca-103-105-211-114.ngrok-free.app/webhook", chain: "eth", // 换成你需要的链,比如bsc、polygon tag: "native_transactions", includeNativeTxs: true, // 关键:开启原生交易监听 addresses: ["0xYourTargetWalletAddress"], // 要监听的钱包地址 };
检查脚本执行逻辑
- 是否调用了创建Stream的方法
你的runApp函数里只定义了option,但没调用Moralis创建Stream的核心方法!必须加上await Moralis.Streams.add(option),而且要确保runApp函数被执行,完整示例:const runApp = async () => { const option = { webhookUrl: "https://15ca-103-105-211-114.ngrok-free.app/webhook", chain: "eth", tag: "native_transactions", includeNativeTxs: true, addresses: ["0xYourTargetWalletAddress"], }; // 核心:调用add方法创建流 const stream = await Moralis.Streams.add(option); console.log("Stream创建成功:", stream.toJSON()); }; // 别忘了执行函数! runApp().catch(err => console.error("创建Stream出错:", err));
处理Webhook的验证请求
Moralis创建Stream时会先发送一个GET请求验证你的webhook有效性,你的webhook.js只处理了POST请求,这会导致Moralis认为你的webhook无效,从而不推送数据。必须添加GET路由:
// 新增GET路由处理Moralis的验证请求 app.get("/webhook", (req, res) => { const challenge = req.query.challenge; return res.status(200).json({ challenge }); });
测试排查步骤
- 重启你的webhook服务,确保GET和POST路由都生效。
- 用curl测试GET验证:
curl https://你的ngrok地址/webhook?challenge=test,确认返回{"challenge":"test"}。 - 查看ngrok的日志面板,看是否有Moralis的请求进来:
- 如果没有请求:说明Stream配置错误(比如地址写错、链不支持),去Moralis后台看你创建的Stream状态是否为
Active。 - 如果有请求但返回错误:根据错误码调整你的webhook逻辑。
- 如果没有请求:说明Stream配置错误(比如地址写错、链不支持),去Moralis后台看你创建的Stream状态是否为
最后再检查几个常见坑
- 确认你的Moralis API Key是正确的,有没有拼写错误。
- 确保ngrok的地址是最新的(每次重启ngrok都会换地址),如果换了地址要同步更新
webhookUrl。 - 检查目标钱包是否有原生币交易发生,没有交易的话自然不会触发webhook。
备注:内容来源于stack exchange,提问作者Umaid
相关产品推荐
相关产品推荐

