nodejs / readable-stream

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

Error: Cannot find module '../crypto/util' #514

Open tpluscode opened 1 year ago

tpluscode commented 1 year ago

In a mocha test I use readable-stream and I got this

Error: Cannot find module '../crypto/util'
Require stack:
- packages/formats/node_modules/readable-stream/lib/internal/streams/lazy_transform.js

I did not find why it gets loaded but the fact is there is no crypto/util.js or similar module.

mcollina commented 1 year ago

how do you load lazy_transform.js?

tpluscode commented 1 year ago

That's kinda the thing, I don't.

There are only 2 mentions of lazy_transform in my entire working directory

> find . -type f | xargs egrep -i lazy_transform
node_modules/watchpack-chokidar2/node_modules/fsevents/build/config.gypi:      "lib/internal/streams/lazy_transform.js",
node_modules/webpack-dev-server/node_modules/fsevents/build/config.gypi:      "lib/internal/streams/lazy_transform.js",
tpluscode commented 1 year ago

Any ideas? For now I patched this locally but again, why is that module trying to import ../crypto/util.js which does not exist?

kanongil commented 1 year ago

The main issue seems to be that readable-stream includes a broken-on-require unused internal module (lazy_transform).

This is a problem since bundlers / transpilers / test runners can sometimes recursively load all **.js modules, as is likely happening here.

mcollina commented 1 year ago

lazy_transform should be skipped when we build this module from Node.js core source.

Adding it to this list would do: https://github.com/nodejs/readable-stream/blob/main/build/files.mjs

Would you like to send a PR? Ideally it should contain a unit test for this issue so we do not regress.