From 469332340a994ce9d88fc2d8937c3032f657bdf9 Mon Sep 17 00:00:00 2001 From: Max Leiter Date: Tue, 27 Jun 2023 12:06:58 -0700 Subject: [PATCH 1/2] next/node-polyfill-web-streams: fix ReadableStream polyfill --- .../next/src/server/node-polyfill-web-streams.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/next/src/server/node-polyfill-web-streams.ts b/packages/next/src/server/node-polyfill-web-streams.ts index 88e0f9091b87..7daa9f4c13f4 100644 --- a/packages/next/src/server/node-polyfill-web-streams.ts +++ b/packages/next/src/server/node-polyfill-web-streams.ts @@ -1,8 +1,14 @@ // Polyfill Web Streams for the Node.js runtime. if (!global.ReadableStream) { - const { ReadableStream } = - require('next/dist/compiled/@edge-runtime/ponyfill') as typeof import('next/dist/compiled/@edge-runtime/ponyfill') - global.ReadableStream = ReadableStream + // In Node v16, ReadableStream is available natively but under the `stream` namespace. + // In Node v18+, it's available under global. + if (require('stream').ReadableStream) { + global.ReadableStream = require('stream').ReadableStream + } else { + const { ReadableStream } = + require('next/dist/compiled/@edge-runtime/ponyfill') as typeof import('next/dist/compiled/@edge-runtime/ponyfill') + global.ReadableStream = ReadableStream + } } if (!global.TransformStream) { const { TransformStream } = From 7e5326aef7b9d461358ec8710a8499d1689a4d64 Mon Sep 17 00:00:00 2001 From: Max Leiter Date: Tue, 27 Jun 2023 12:11:01 -0700 Subject: [PATCH 2/2] transform stream --- packages/next/src/server/node-polyfill-web-streams.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/next/src/server/node-polyfill-web-streams.ts b/packages/next/src/server/node-polyfill-web-streams.ts index 7daa9f4c13f4..2d76b62331bb 100644 --- a/packages/next/src/server/node-polyfill-web-streams.ts +++ b/packages/next/src/server/node-polyfill-web-streams.ts @@ -11,7 +11,12 @@ if (!global.ReadableStream) { } } if (!global.TransformStream) { - const { TransformStream } = - require('next/dist/compiled/@edge-runtime/ponyfill') as typeof import('next/dist/compiled/@edge-runtime/ponyfill') - global.TransformStream = TransformStream + // Same as ReadableStream above. + if (require('stream').TransformStream) { + global.TransformStream = require('stream').TransformStream + } else { + const { TransformStream } = + require('next/dist/compiled/@edge-runtime/ponyfill') as typeof import('next/dist/compiled/@edge-runtime/ponyfill') + global.TransformStream = TransformStream + } }