lemonsqueezy.ts icon indicating copy to clipboard operation
lemonsqueezy.ts copied to clipboard

TypeError: First parameter has member 'readable' that is not a ReadableStream.

Open madebyfabian opened this issue 2 years ago • 4 comments

First of all, thanks for your work on this module. It's great to not having to wrap the API manually in my project. I'ved noticed that it works great, returns data, but throws this error when it's being used inside a Nuxt 3 Server:

[nitro] [dev] [unhandledRejection] TypeError: First parameter has member 'readable' that is not a ReadableStream.                                                                                      10:37:19
    at assertReadableStream (file:///Users/fabian/Desktop/code/nuxt-project/node_modules/.pnpm/[email protected]/node_modules/node-fetch-native/dist/shared/node-fetch-native.25a180d0.mjs:428:21)
    at convertReadableWritablePair (file:///Users/fabian/Desktop/code/nuxt-project/node_modules/.pnpm/[email protected]/node_modules/node-fetch-native/dist/shared/node-fetch-native.25a180d0.mjs:3505:11)
    at ReadableStream.pipeThrough (file:///Users/fabian/Desktop/code/nuxt-project/node_modules/.pnpm/[email protected]/node_modules/node-fetch-native/dist/shared/node-fetch-native.25a180d0.mjs:3580:33)
    at fetchFinale (/Users/fabian/Desktop/code/nuxt-project/node_modules/.pnpm/[email protected]/node_modules/undici/lib/fetch/index.js:973:52)
    at mainFetch (/Users/fabian/Desktop/code/nuxt-project/node_modules/.pnpm/[email protected]/node_modules/undici/lib/fetch/index.js:773:5)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

Reproduction: https://stackblitz.com/edit/github-dpsgxe

Do you have any idea what this could cause? If you think this is specific to Nuxt, I'll create an issue there.

madebyfabian avatar Feb 21 '23 15:02 madebyfabian

Checking the stack trace this seems like more an issue with undici & subsequently node-fetch-native. Having a quick look through the undici repo issues there's nothing mentioning First parameter has member 'readable' that is not a ReadableStream so I'm not too sure right now.

I will take a deeper look into this issue at a later date.

NuroDev avatar Feb 21 '23 17:02 NuroDev

First of all, thanks for your work on this module. It's great to not having to wrap the API manually in my project. I'ved noticed that it works great, returns data, but throws this error when it's being used inside a Nuxt 3 Server:

[nitro] [dev] [unhandledRejection] TypeError: First parameter has member 'readable' that is not a ReadableStream.                                                                                      10:37:19
    at assertReadableStream (file:///Users/fabian/Desktop/code/nuxt-project/node_modules/.pnpm/[email protected]/node_modules/node-fetch-native/dist/shared/node-fetch-native.25a180d0.mjs:428:21)
    at convertReadableWritablePair (file:///Users/fabian/Desktop/code/nuxt-project/node_modules/.pnpm/[email protected]/node_modules/node-fetch-native/dist/shared/node-fetch-native.25a180d0.mjs:3505:11)
    at ReadableStream.pipeThrough (file:///Users/fabian/Desktop/code/nuxt-project/node_modules/.pnpm/[email protected]/node_modules/node-fetch-native/dist/shared/node-fetch-native.25a180d0.mjs:3580:33)
    at fetchFinale (/Users/fabian/Desktop/code/nuxt-project/node_modules/.pnpm/[email protected]/node_modules/undici/lib/fetch/index.js:973:52)
    at mainFetch (/Users/fabian/Desktop/code/nuxt-project/node_modules/.pnpm/[email protected]/node_modules/undici/lib/fetch/index.js:773:5)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

Reproduction: https://stackblitz.com/edit/github-dpsgxe

Do you have any idea what this could cause? If you think this is specific to Nuxt, I'll create an issue there.

Nice job, you API key is now public and its working image

Parth971 avatar Jun 22 '23 11:06 Parth971

@Parth971 That's why I wrote "Never do that in your code!" lol. It's just a test project.

madebyfabian avatar Jul 14 '23 10:07 madebyfabian

Suddenly running into this issue now as well. Didn't change code around creating the checkout URL.

Any update or more insights in the meantime?

EDIT: Found the issue, which seems to have been a peer dependency conflict. It started happening after I installed the openai npm module. This was the error I got:

>  TypeError: First parameter has member 'readable' that is not a ReadableStream.
>      at assertReadableStream (/dev/functions/node_modules/web-streams-polyfill/dist/polyfill.js:362:19)
>      at convertReadableWritablePair (/dev/functions/node_modules/web-streams-polyfill/dist/polyfill.js:3524:9)
>      at ReadableStream.pipeThrough (/dev/functions/node_modules/web-streams-polyfill/dist/polyfill.js:3608:29)
>      at fetchFinale (/dev/functions/node_modules/undici/lib/fetch/index.js:973:52)
>      at mainFetch (/dev/functions/node_modules/undici/lib/fetch/index.js:773:5)
>      at processTicksAndRejections (node:internal/process/task_queues:96:5)

When I commented out the import of the openai module, the error did not occur. The openai module has web-streams-polyfill as a dependency:

"openai": {
      "version": "4.12.3",
      "resolved": "https://registry.npmjs.org/openai/-/openai-4.12.3.tgz",
      "integrity": "sha512-Kw8M8qioKg+iw2tCpdJ1G772uV0tk4SRF1MtySYSPr82YH+Csl61kYv2KzKAOqINcOVn5eSN26t0ImIsdJexfw==",
      "requires": {
        "@types/node": "^18.11.18",
        "@types/node-fetch": "^2.6.4",
        "abort-controller": "^3.0.0",
        "agentkeepalive": "^4.2.1",
        "digest-fetch": "^1.3.0",
        "form-data-encoder": "1.7.2",
        "formdata-node": "^4.3.2",
        "node-fetch": "^2.6.7",
        "web-streams-polyfill": "^3.2.1"
      },
      "dependencies": {
     //...
      }
    },

Lemonsqueezy.ts only has undici as a dependency:

"node_modules/lemonsqueezy.ts": {
      "version": "0.1.7",
      "resolved": "https://registry.npmjs.org/lemonsqueezy.ts/-/lemonsqueezy.ts-0.1.7.tgz",
      "integrity": "sha512-7COfsFaPVsz4ik6+b5hVI/PMyu6FE+PmrbNvk1G89P826XVRRnidVhDAes+Ed42RLyigc8bBHFbuUZSglPTO0g==",
      "dependencies": {
        "undici": "^5.20.0"
      },
      "engines": {
        "node": ">=16.*"
      }
    },

It seems that undici is using web-streams-polyfill under the hood, from the error stack trace..

What fixed the error in my case was the order of importing. When I changed it so openai is imported after lemonsqueey.ts, the error did not occur anymore.

cloudatlas9 avatar Oct 19 '23 07:10 cloudatlas9