common-shakeify icon indicating copy to clipboard operation
common-shakeify copied to clipboard

v1.1 has a bug compared to v0 and v1.0: require can't take a number

Open ljharb opened this issue 2 years ago • 3 comments

I get this error output in my tests:

  node:internal/validators:114
    throw new ERR_INVALID_ARG_TYPE(name, 'string', value);
    ^

TypeError [ERR_INVALID_ARG_TYPE]: The "id" argument must be of type string. Received type number (298)
    at new NodeError (node:internal/errors:388:5)
    at validateString (node:internal/validators:114:11)
    at Module.require (node:internal/modules/cjs/loader:1005:3)
    at require (node:internal/modules/cjs/helpers:102:18)

I suspect this was introduced in #31.

ljharb avatar Jul 03 '22 17:07 ljharb

The browserify prelude uses the require function from the environment if a module is required that is not part of the bundle. That's mostly for bundle splitting but when running the bundle in Node.js, it picks up the Node.js require.

It seems like common-shakeify is somehow removing a module from the bundle but not removing the associated require call completely.

goto-bus-stop avatar Oct 16 '22 11:10 goto-bus-stop

I would expect that, at the least, any require with an ID that doesn't exist in the bundle is replaced with the original name, for both fallback and debugging purposes :-)

Maybe that would always be a useful "final step" in any browserify bundle?

ljharb avatar Oct 17 '22 00:10 ljharb

ping @goto-bus-stop

ljharb avatar Feb 17 '23 06:02 ljharb