Entonces, estoy en el proceso de hacer una actualización largamente esperada en un proyecto basado en Node, incluido con webpack y babel. En el proceso de actualización de webpack más allá de v4, configuré algunos de los polyfills que necesito agregando una sección resolve.fallback a la configuración en mi webpack.config.js:
resolve: { extensions: [".ts", ".tsx", ".html", ".js"], fallback: { buffer: require.resolve("buffer"), crypto: require.resolve("crypto-browserify"), stream: require.resolve("stream-browserify"), }, }, Sin embargo, algo (sospecho que estos polyfills, pero no estoy seguro) ahora está causando que todas las instancias de NodeJS Streams en mi proyecto terminen siendo ReadableStreams estándar, incluido el cuerpo de una respuesta de un node-fetch importado explícitamente:
import {default as nodefetch} from 'node-fetch' [...] const response = await nodefetch(endpointURI, { method: "POST", headers: { Authorization: authToken, Origin: window.location.host, }, body: JSON.stringify(data), }); return response.body; // Attempting to call `response.body.pipe()` here // will result in a "not a function" error. In a debugger, // response.body appears to be a standard (Non-Node) ReadableStream.Entonces, no estoy seguro de por qué sucede esto, ¡pero me encantaría averiguarlo! Versiones relevantes:
node: v16.15.1 node-fetch@2.6.7 webpack-cli@4.10.0 webpack@5.73.0 stream-browserify@3.0.0 @babel/core@7.18.6 @babel/preset-env@7.18.6 @babel/preset-react@7.18.6 @babel/preset-typescript@7.18.6 @babel/runtime@7.18.6