nodejs / readable-stream

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

TypeError [ERR_INVALID_ARG_TYPE]: The "superCtor.prototype" property must be of type object. Received undefined #488

Open btakita opened 1 year ago

btakita commented 1 year ago

When using rollup without vite...the following error occurs on pnpm install:

TypeError [ERR_INVALID_ARG_TYPE]: The "superCtor.prototype" property must be of type object. Received undefined
│     at new NodeError (node:internal/errors:387:5)
│     at inherits (node:util:243:11)
│     at Object.<anonymous> (/home/brian/project/node_modules/.pnpm/bl@5.0.0/node_modules/bl/bl.js:36:1)
│     at Module._compile (node:internal/modules/cjs/loader:1126:14)
│     at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
│     at Module.load (node:internal/modules/cjs/loader:1004:32)
│     at Function.Module._load (node:internal/modules/cjs/loader:839:12)
│     at Module.require (node:internal/modules/cjs/loader:1028:19)
│     at require (node:internal/modules/cjs/helpers:102:18)
│     at Object.<anonymous> (/home/brian/project/node_modules/.pnpm/tar-stream@2.2.0/node_modules/tar-stream/extract.
│   code: 'ERR_INVALID_ARG_TYPE'

Note that I use .pnpmfile.cjs to alias readable-stream with vite-compatible-readable-stream. I don't see an issues tab with https://github.com/exogee-technology/readable-stream, so I'm raising the issue here. Hopefully the circular dependency with readable-stream will be fixed so the vite-compatible-readable-stream fork would not be necessary.

function readPackage(pkg) {
  if (pkg.dependencies && pkg.dependencies['readable-stream']) {
    pkg.dependencies['readable-stream'] = 'npm:vite-compatible-readable-stream@latest'
  }
  return pkg
}

module.exports = {
  hooks: {
    readPackage
  }
}
mcollina commented 1 year ago

Thanks for reporting. You can just use this module. Its version 4 has the circular dependency fixed.

If you still have the problem after upgrading, 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.

For any other bugs in vite-compatible-readable-stream, please contact their maintainers. Thanks for reporting!

AtiX commented 1 year ago

I'm trying to use readable-stream with rollup and still run into the circular dependency issue, as version 4.2.0 in fact still has a circular dependency (here <-> here, for example) which then causes problems when using readable-stream in the bundle.

The rollup output complains about the circular dependencies:

Circular dependency: node_modules/readable-stream/lib/internal/streams/duplex.js -> node_modules/readable-stream/lib/internal/streams/readable.js -> node_modules/readable-stream/lib/internal/streams/duplex.js
Circular dependency: node_modules/readable-stream/lib/internal/streams/duplex.js -> node_modules/readable-stream/lib/internal/streams/writable.js -> node_modules/readable-stream/lib/internal/streams/duplex.js
Circular dependency: node_modules/readable-stream/lib/internal/streams/duplex.js -> node_modules/readable-stream/lib/internal/streams/duplexify.js -> node_modules/readable-stream/lib/internal/streams/duplex.js

which then, when attempting to use the (bundled) code, gives me the error

Class extends value undefined is not a constructor or null

where I assume that rollup resolved DuplexStream to undefined due to rollups handling of the circular dependency.

luiscastro193 commented 11 months ago

Atix is right. Rollup bundles fail due to circular dependencies.