Node.js中如何从Readable流获取路径?(含S3测试场景)
从S3 PutObjectCommandInput的Readable流中获取文件路径(测试场景)
在使用aws_sdk_client_mock的测试场景中,你遇到的问题是:从PutObjectCommandInput拿到的Readable流调试时能看到path属性,但官方SDK类型定义没暴露这个字段,没法直接访问。
解决方法很直接,用类型断言扩展Readable的类型,让TypeScript允许访问这个隐含的path属性:
const putCall = s3Mock.call(1).args[0].input as PutObjectCommandInput; // 用交叉类型把Readable和带path属性的类型合并 const readable = putCall.Body as Readable & { path?: string }; const path = readable?.path; // 这里就能拿到你要的/tmp/JbHO.csv了
补充说明
这个path属性其实是Node.js原生fs模块创建的Readable流(比如fs.createReadStream返回的实例)自带的字段,但AWS SDK的PutObjectCommandInput里对Body的类型定义只标注了通用的Readable,没包含这个特定属性,所以需要手动扩展类型。
测试场景里你明确知道这个流来自本地文件,所以用可选链(?.)处理就行,避免流不存在时的报错。
内容的提问来源于stack exchange,提问作者Interlated
相关产品推荐
相关产品推荐

