clone-deep icon indicating copy to clipboard operation
clone-deep copied to clipboard

Reassigning global `require` breaks rollup/vite bundler

Open leifdalan opened this issue 1 year ago • 0 comments

Hi! 👋

Firstly, thanks for your work on this project! 🙂

Today I used patch-package to patch [email protected] for the project I'm working on.

When bundling using rollup, I get the following error:

5.388 ✓ 2163 modules transformed.
5.390 x Build failed in 4.01s
5.392 node_modules/clone-deep/utils.js (10:0): Illegal reassignment of import "commonjsRequire" in "node_modules/clone-deep/utils.js".
5.392 file: /webapp/node_modules/clone-deep/utils.js:10:0
5.392 
5.392  8: var fn = require;
5.392  9: 
5.392 10: require = utils;
5.392     ^
5.392 11: require('is-plain-object', 'isObject');
5.392 12: require('shallow-clone', 'clone');
5.392 
5.392     at getRollupError (file:///webapp/node_modules/rollup/dist/es/shared/parseAst.js:395:41)
5.392     at error (file:///webapp/node_modules/rollup/dist/es/shared/parseAst.js:391:42)
5.392     at Module.error (file:///webapp/node_modules/rollup/dist/es/shared/node-entry.js:15535:16)
5.392     at Identifier.disallowImportReassignment (file:///webapp/node_modules/rollup/dist/es/shared/node-entry.js:4991:35)
5.392     at Identifier.deoptimizePath (file:///webapp/node_modules/rollup/dist/es/shared/node-entry.js:4888:18)
5.392     at AssignmentExpression.applyDeoptimizations (file:///webapp/node_modules/rollup/dist/es/shared/node-entry.js:10958:19)
5.392     at AssignmentExpression.hasEffects (file:///webapp/node_modules/rollup/dist/es/shared/node-entry.js:10877:18)
5.392     at ExpressionStatement.hasEffects (file:///webapp/node_modules/rollup/dist/es/shared/node-entry.js:2879:28)
5.392     at Program.hasEffects (file:///webapp/node_modules/rollup/dist/es/shared/node-entry.js:13256:22)
5.392     at Program.shouldBeIncluded (file:///webapp/node_modules/rollup/dist/es/shared/node-entry.js:2979:62) {
5.392   code: 'ILLEGAL_REASSIGNMENT',
5.392   id: '/webapp/node_modules/clone-deep/utils.js',
5.392   pos: 425,
5.392   loc: {
5.392     column: 0,
5.392     file: '/webapp/node_modules/clone-deep/utils.js',
5.392     line: 10
5.392   },
5.392   frame: ' 8: var fn = require;\n' +
5.392     ' 9: \n' +
5.392     '10: require = utils;\n' +
5.392     '    ^\n' +
5.392     "11: require('is-plain-object', 'isObject');\n" +
5.392     "12: require('shallow-clone', 'clone');",

Here is the diff that solved my problem:

diff --git a/node_modules/clone-deep/utils.js b/node_modules/clone-deep/utils.js
index d2a7570..0315a18 100644
--- a/node_modules/clone-deep/utils.js
+++ b/node_modules/clone-deep/utils.js
@@ -5,14 +5,12 @@
  */
 
 var utils = require('lazy-cache')(require);
-var fn = require;
 
-require = utils;
-require('is-plain-object', 'isObject');
-require('shallow-clone', 'clone');
-require('kind-of', 'typeOf');
-require('for-own');
-require = fn;
+const _require = utils;
+_require('is-plain-object', 'isObject');
+_require('shallow-clone', 'clone');
+_require('kind-of', 'typeOf');
+_require('for-own');
 
 /**
  * Expose `utils`

This issue body was partially generated by patch-package.

leifdalan avatar Oct 14 '24 21:10 leifdalan