nodejs / readable-stream

Node-core streams for userland
https://nodejs.org/api/stream.html
Other
1.03k stars 225 forks source link

Incompatibility with Rollup/Vite process polyfill #539

Open WasabiThumb opened 1 month ago

WasabiThumb commented 1 month ago

Similar to #450, though in this case a polyfill is present. It looks like the process polyfill is an ES module with a default export that isn't being properly unwrapped by readable-stream.

I've set a breakpoint on the line that is causing TypeError: e.nextTick is not a function: image

I can confirm that a nextTick implementation is available at both the default and process fields. Here my vite.config.ts:

import {defineConfig} from "vite";
import {nodePolyfills} from "vite-plugin-node-polyfills";

export default defineConfig({
    mode: 'development',
    build: {
        sourcemap: true
    },
    plugins: [
        nodePolyfills() // also tried: { globals: { process: true } }
    ]
});
Package Version
readable-stream | ^4.5.2
vite | ^5.4.2
vite-plugin-node-polyfills | ^0.22.0
rollup | ^4.21.0
esbuild | ^0.23.1
mcollina commented 1 month ago

Thanks for reporting!

Can you provide steps to reproduce? We often need a reproducible example, e.g. some code that allows someone else to recreate your problem by just copying and pasting it. If it involves more than a couple of different file, create a new repository on GitHub and add a link to that.

WasabiThumb commented 1 month ago

Thanks for reporting!

Can you provide steps to reproduce? We often need a reproducible example, e.g. some code that allows someone else to recreate your problem by just copying and pasting it. If it involves more than a couple of different file, create a new repository on GitHub and add a link to that.

Here you are! ^_^ https://github.com/WasabiThumb/reprex-539 (non-boilerplate located here) I've noticed that simply changing line 2 on src/main.ts to import stream rather than readable-stream makes the demo work flawlessly, but it's a shame since I thought usage of stream was discouraged 😢

WasabiThumb commented 1 month ago

I've added a GitHub pages deployment, pressing the button should cause a console error. https://wasabithumb.github.io/reprex-539/