Next.Js无服务器函数无法工作,除非我ping它们

4xrmg8kj  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(104)

我有一个端点,它从WhatsApp WebHook获取消息。然后,这个端点调用blog到另一个端点,并返回200到whatsapp webhook。
在我的本地机器上,它工作得很好,很快,但在我的vercel部署项目中,它只到达第一个端点,但只有当我ping端点时,它才会被最后一次调用触发。
我试着添加一些日志,但是在vercel生产环境中调试很困难,而且不是很有效。这是我调用我的其他端点这是我的whatsapp webhook.ts

const conversation = await prisma.conversation.findFirst({
          where: {
            senderId: message.senderId,
          },
        });
        console.log(
          `${process.env.BASE_URL}/api/whatsapp/services/preValidation`
        );

        if (!conversation?.verify || !conversation) {
          console.log("member is not verified yet");
          axios.post(
            `${process.env.BASE_URL}/api/whatsapp/services/preValidation`,
            {
              conversation: conversation,
              message: message,
              recipientId: teamId,
              source: "whatsapp",
            }
          );
          return new Response("message is not verified yet", {
            status: 200,
          });
        }

        axios.post(
          `${process.env.BASE_URL}/api/facebook/services/handleMessages`,
          {
            conversation: conversation,
            message: message,
            recipientId: teamId,
          }
        );
return new Response("EVENT_RECEIVED", { status: 200 });
ig9co6j1

ig9co6j11#

我也有类似的问题。主要的问题是我们的本地开发环境和Vercel平台之间的差异。在我们的本地,Axios呼叫即使在我们发送响应后也会得到解决。在Vercel无服务器函数或边缘函数中,一旦返回响应,所有后台任务都将终止,除非您正在流式传输响应或使用类似https://vercel.com/docs/functions/edge-functions-api#waittill;所以你看不到日志
如果在Axios调用之前添加await,则一切都应按预期工作。
供参考:

相关问题