如何在运行时记录AWS SDK v3的@aws-sdk/client-s3包版本?
获取@aws-sdk/client-s3运行时实际版本的方法
你的导入代码:
const { S3Client, GetBucketPolicyCommand } = require('@aws-sdk/client-s3');
要获取运行时实际安装的包版本,无需依赖SDK内置方法,可通过以下可靠方式实现:
- 方法一:读取运行时加载的包的package.json
利用Node.js的require.resolve定位包的实际安装路径,再读取对应路径下的package.json文件,直接获取当前环境生效的版本:
const path = require('path'); const fs = require('fs'); // 获取@aws-sdk/client-s3包的入口文件实际路径 const s3ClientEntryPath = require.resolve('@aws-sdk/client-s3'); // 回溯找到包的根目录(package.json所在位置) const s3PackageRoot = path.dirname(path.dirname(s3ClientEntryPath)); // 读取并解析版本信息 const s3PackageInfo = JSON.parse(fs.readFileSync(path.join(s3PackageRoot, 'package.json'), 'utf8')); console.log('@aws-sdk/client-s3运行时版本:', s3PackageInfo.version);
该方式完全反映当前运行环境中实际加载的包版本,不受未执行安装操作的package.json修改影响。
- 方法二:脚本场景下使用npm命令解析
如果是在Shell脚本中获取版本,可执行npm ls命令并解析输出(依赖npm环境):
npm ls @aws-sdk/client-s3 --json | jq '.dependencies["@aws-sdk/client-s3"].version'
内容的提问来源于stack exchange,提问作者jcollum
相关产品推荐
相关产品推荐

