Node中合法的glob调用为何会偶尔静默失败?
glob@9 静默失败问题求助
问题代码
glob("./bin/Documentation/images/*.gif", {}, async function (er, files) { if (er) return console.error(er) for (filename of files) { execFileSync(gifsicle, ['-O2', '-o', filename, filename]); } })
问题现象
这段代码原本是可用的生产代码,近期突然出现异常:调试追踪显示代码能正常生成文件列表,但随后会静默失败——程序直接退出,既没有报错、抛出任何异常,也从未进入回调函数,完全没有可排查的线索。推测问题可能出在Promise展开过程中。
当前使用的是glob@9版本,因后续版本存在破坏性变更,无法升级。
核心疑问
- 像glob这种被广泛使用的工具,为何会出现这类无任何报错的静默失败情况?目前未找到相关资料提及该问题。
- 遇到这类无报错、无异常输出的静默失败问题,该如何进行调试排查?
复现步骤
目前唯一的复现方式是完整执行以下操作:
- 克隆指定仓库
- 执行依赖安装命令:
npm i rimraf@3 compress-images web-resource-inliner ncp gifsicle@5.3.0 concat ycssmin terser gzipper html-minifier-terser glob@9 - 执行编译命令:
node ./compile.js
希望有遇到过同类问题的开发者能提供解决方案。
内容的提问来源于stack exchange,提问作者david.pfx
相关产品推荐
相关产品推荐

