Error "spawnSync /bin/sh ENOBUFS“在执行以下行时,非系统地在我的 NodeJs 应用程序中生成:
child_process.execSync(`cd /tmp/myFolder ; tar -xjf myArchive.tar.bz2`);
存档大小为 81.5 MB,带有 NVM 的 NodeJs 版本:12.17.0。
问题是execSync模式在 shell 内执行命令,并使用有限的缓冲区 (200 Kb) 来转发执行输出。此外,默认的 shell 执行选项是“pipe”,这意味着输出必须转发给父级。
为了让 shell 忽略执行输出,即将输出转发到 /dev/null ,从而防止缓冲区填满,您必须使用“ignore”执行选项如下:
child_process.execSync(`cd /tmp/myFolder ; tar -xjf myArchive.tar.bz2`, { stdio: 'ignore' });
阅读更多关于exec and spawn执行模式here and here
P.S.还要考虑这个错误的产生系统地当在存档提取过程中磁盘空间不足时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)