Vite集成aws-sdk构建后报错:Uncaught TypeError: Cannot read properties of undefined (reading 'prototype')
解决AWS$6.STS.prototype未定义的TypeError报错
问题分析
这个报错说明代码中尝试访问AWS$6.STS.prototype时,STS对象未被正确加载。虽然S3上传功能正常,说明AWS SDK的核心S3模块已正常初始化,但STS(安全令牌服务)模块可能因打包优化、隐式依赖未声明或版本兼容问题未被正确引入。
解决步骤
显式引入STS模块
如果使用AWS SDK v2,在代码入口或涉及STS逻辑的文件中显式导入STS:import { STS } from 'aws-sdk'; // CommonJS环境 const { STS } = require('aws-sdk');这样打包工具会保留STS模块,避免被tree shaking误删。
适配AWS SDK v3的模块化引入
若使用SDK v3,需单独安装@aws-sdk/client-sts包,再按模块化方式导入:import { STSClient } from '@aws-sdk/client-sts'; // 初始化客户端 const stsClient = new STSClient({ region: '你的区域' });注意不要混用v2和v3的导入方式,否则会导致模块加载异常。
调整打包工具配置
检查Webpack、Vite等打包工具的优化规则,若开启了过度tree shaking,可能会误删未被直接引用的STS模块。以Vite为例,可在配置中把AWS SDK相关模块排除在tree shaking优化外:// vite.config.js export default { build: { rollupOptions: { treeshake: { exclude: ['aws-sdk', '@aws-sdk/client-sts'] } } } }排查第三方依赖
如果报错是由第三方库触发的,查看该库的文档,确认其对AWS SDK的版本要求,是否需要显式引入STS模块,或存在版本兼容问题,必要时升级或替换依赖包。
内容的提问来源于stack exchange,提问作者Ravuthz
相关产品推荐
相关产品推荐

