readable-stream icon indicating copy to clipboard operation
readable-stream copied to clipboard

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

Open tpluscode opened this issue 2 years ago • 5 comments

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.

tpluscode avatar May 04 '23 09:05 tpluscode

how do you load lazy_transform.js?

mcollina avatar May 04 '23 12:05 mcollina

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 avatar May 04 '23 15:05 tpluscode

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

tpluscode avatar May 10 '23 07:05 tpluscode

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.

kanongil avatar May 10 '23 08:05 kanongil

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.

mcollina avatar May 15 '23 08:05 mcollina