patch-package: error: Error: spawnSync git ENOBUFS
Small reproduction:
-
Create an empty folder with only one file:
package.json{ "name": "rw", "dependencies": { "react-window": "1.8.5" } } -
Make some changes inside
node_modules/react-window/distfiles -
npx patch-package react-window -
If fails with error below:
[17:05:40] brunolemos:rw $ patch-package react-window
patch-package 6.1.2
• Creating temporary folder
• Installing react-window@1.8.5 with yarn
• Diffing your files with clean files
{
error: Error: spawnSync git ENOBUFS
at Object.spawnSync (internal/child_process.js:1041:20)
at Object.spawnSync (child_process.js:607:24)
at Function.spawnSync [as sync] (/usr/local/lib/node_modules/patch-package/node_modules/cross-spawn/index.js:26:23)
at Object.exports.spawnSafeSync (/usr/local/lib/node_modules/patch-package/dist/spawnSafe.js:10:32)
at git (/usr/local/lib/node_modules/patch-package/dist/makePatch.js:73:32)
at Object.makePatch (/usr/local/lib/node_modules/patch-package/dist/makePatch.js:104:26)
at /usr/local/lib/node_modules/patch-package/dist/index.js:48:25
at Array.forEach (<anonymous>)
at Object.<anonymous> (/usr/local/lib/node_modules/patch-package/dist/index.js:47:22)
at Module._compile (internal/modules/cjs/loader.js:868:30) {
errno: 'ENOBUFS',
code: 'ENOBUFS',
syscall: 'spawnSync git',
path: 'git',
spawnargs: [
'diff',
'--cached',
'--no-color',
'--ignore-space-at-eol',
'--no-ext-diff'
]
},
status: null,
signal: 'SIGTERM',
output: [
null,
<Buffer 64 69 66 66 20 2d 2d 67 69 74 20 61 2f 6e 6f 64 65 5f 6d 6f 64 75 6c 65 73 2f 72 65 61 63 74 2d 77 69 6e 64 6f 77 2f 64 69 73 74 2f 69 6e 64 65 78 2d ... 1056718 more bytes>,
<Buffer >
],
pid: 79859,
stdout: <Buffer 64 69 66 66 20 2d 2d 67 69 74 20 61 2f 6e 6f 64 65 5f 6d 6f 64 75 6c 65 73 2f 72 65 61 63 74 2d 77 69 6e 64 6f 77 2f 64 69 73 74 2f 69 6e 64 65 78 2d ... 1056718 more bytes>,
stderr: <Buffer >
}
/usr/local/lib/node_modules/patch-package/dist/makePatch.js:150
throw e;
^
{
error: Error: spawnSync git ENOBUFS
at Object.spawnSync (internal/child_process.js:1041:20)
at Object.spawnSync (child_process.js:607:24)
at Function.spawnSync [as sync] (/usr/local/lib/node_modules/patch-package/node_modules/cross-spawn/index.js:26:23)
at Object.exports.spawnSafeSync (/usr/local/lib/node_modules/patch-package/dist/spawnSafe.js:10:32)
at git (/usr/local/lib/node_modules/patch-package/dist/makePatch.js:73:32)
at Object.makePatch (/usr/local/lib/node_modules/patch-package/dist/makePatch.js:104:26)
at /usr/local/lib/node_modules/patch-package/dist/index.js:48:25
at Array.forEach (<anonymous>)
at Object.<anonymous> (/usr/local/lib/node_modules/patch-package/dist/index.js:47:22)
at Module._compile (internal/modules/cjs/loader.js:868:30) {
errno: 'ENOBUFS',
code: 'ENOBUFS',
syscall: 'spawnSync git',
path: 'git',
spawnargs: [
'diff',
'--cached',
'--no-color',
'--ignore-space-at-eol',
'--no-ext-diff'
]
},
status: null,
signal: 'SIGTERM',
output: [
null,
<Buffer 64 69 66 66 20 2d 2d 67 69 74 20 61 2f 6e 6f 64 65 5f 6d 6f 64 75 6c 65 73 2f 72 65 61 63 74 2d 77 69 6e 64 6f 77 2f 64 69 73 74 2f 69 6e 64 65 78 2d ... 1056718 more bytes>,
<Buffer >
],
pid: 79859,
stdout: <Buffer 64 69 66 66 20 2d 2d 67 69 74 20 61 2f 6e 6f 64 65 5f 6d 6f 64 75 6c 65 73 2f 72 65 61 63 74 2d 77 69 6e 64 6f 77 2f 64 69 73 74 2f 69 6e 64 65 78 2d ... 1056718 more bytes>,
stderr: <Buffer >
}
[17:05:44] brunolemos:rw $
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Reactions: 5
- Comments: 26 (3 by maintainers)
Thank you, this helped. So we now need to
patch-packagepatch-package? 😉@alepri51 I temporarily worked around it and managed to create my patch by going to:
node_modules/patch-package/dist/makePatch.jsline 108, specifically in this code:and added an extra option called
maxBufferto increase the buffer size to 100mb (it was 1 mb by default which is too low)now the code looks like this:
and my patch was created successfully. I hope that helps someone.
Here is a gist with the patch by @SudoPlz I’m using successfully:
https://gist.github.com/brussee/e382ed12ca007a88170289e54b526063
Got it fixed by increasing maxBuffer to maxBuffer: 2048 * 1024 * 100
So we basically need to patch the
patch-packagefirst in order to use it to patch other packages…Can we get this fixed, possibly by upping the default
maxBufferor throwing a more clear error suggesting to up themaxBufferwhen running the command?I just ran into this too, and while it is incredibly meta to have to patch
patch-package, it’s not exactly the point 😉A fix for this was just released in v6.4.5. Thanks to @nomi9995 for making the PR 🙏🏼
Still failing for me with 6.4.7
I also have the same problem with the version 8.0.0
This only happens when I was trying to patch the
.js.mapfiles as well. Maybe they are too big.My patch-package version is 6.4.7 and maxBuffer: 1024 * 1024 * 100 already added in the makePatch file. I still get this error
To be honest if we raise maxBuffer to 2 mb it may fix everyone’s issue … just saying …
Hit this when trying to patch the
threenode_module.maxBuffer: 1024 * 1024 * 100fixed it, thanks!@Timebutt would it not be better to allow passing a maxBuffer param? There is a discussion of the same kind of problem in the Lerna repo here: https://github.com/lerna/lerna/issues/479
It would also be nice to know what the buffer defaults to.
This issue comes up quite often when patching react-native packages for older repos as they could have some post-install steps which generate a large number of files.
Happened for me with
expo-modules-corewith trying to apply the changes from this commit: https://github.com/expo/expo/pull/18518Run into the same issue.
Artificially raising the maxBuffer seems to me a bit too much. I’d vote for cleaner message (“File too big: <path>. Please raise --maxBuffer to over <size>”) and option to change maxBuffer and optionally make it automatically adjust (check size of all files, if they are bigger than buffer than raise the bar before spawning git diff).