replicate/replicate-javascript

The `validateWebhook` function crashes in nodejs v0.18.x when called from Next.js 12.1.0 (pages router)

jakedahn opened this issue · 0 comments

When I run the validateWebhook function from within a Next.js 12.1.0 pages-router Next.js app with Node.js v18.18.0, I get the following error:

TypeError: requestData.headers.get is not a function
    at validateWebhook (/Users/jakedahn/next12-replicate-webhook/node_modules/replicate/lib/util.js:38:30)
    at handler (webpack-internal:///(api)/./pages/api/replicate-webhook.js:22:83)
    at K (/Users/jakedahn/next12-replicate-webhook/node_modules/next/dist/compiled/next-server/pages-api.runtime.dev.js:21:2877)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async U.render (/Users/jakedahn/next12-replicate-webhook/node_modules/next/dist/compiled/next-server/pages-api.runtime.dev.js:21:3955)
    at async DevServer.runApi (/Users/jakedahn/next12-replicate-webhook/node_modules/next/dist/server/next-server.js:598:9)
    at async NextNodeServer.handleCatchallRenderRequest (/Users/jakedahn/next12-replicate-webhook/node_modules/next/dist/server/next-server.js:269:37)
    at async DevServer.handleRequestImpl (/Users/jakedahn/next12-replicate-webhook/node_modules/next/dist/server/base-server.js:812:17)
    at async /Users/jakedahn/next12-replicate-webhook/node_modules/next/dist/server/dev/next-dev-server.js:339:20
    at async Span.traceAsyncFn (/Users/jakedahn/next12-replicate-webhook/node_modules/next/dist/trace/trace.js:154:20)
    at async DevServer.handleRequest (/Users/jakedahn/next12-replicate-webhook/node_modules/next/dist/server/dev/next-dev-server.js:336:24)
    at async invokeRender (/Users/jakedahn/next12-replicate-webhook/node_modules/next/dist/server/lib/router-server.js:173:21)
    at async handleRequest (/Users/jakedahn/next12-replicate-webhook/node_modules/next/dist/server/lib/router-server.js:350:24)
    at async requestHandlerImpl (/Users/jakedahn/next12-replicate-webhook/node_modules/next/dist/server/lib/router-server.js:374:13)
    at async Server.requestListener (/Users/jakedahn/next12-replicate-webhook/node_modules/next/dist/server/lib/start-server.js:141:13)

I suspect this is caused by some version-incompatible syntax differences with older versions of Node.js/Next.js and the latest versions.

To confirm this was a version problem, I ran the following snippet, which successfully printed LOG A 123, then crashed on test.headers.get("webhook-id").

  const test = {
    headers: {
      "webhook-id": "123",
      "webhook-timestamp": "456",
      "webhook-signature": "789",
    },
    body: "wheeeee",
  };

  console.log('LOG A, test.headers["webhook-id"])
  console.log('LOG B', test.headers.get("webhook-id"));