You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在IE 11中使用AWS JavaScript Promises?解决require未定义报错

解决IE11下AWS SDK使用Bluebird Promise的问题 + 「require is not defined」报错修复

我刚好处理过类似的场景,给你一步步拆解解决方案:

问题根源

  1. IE11不支持原生Promise,所以必须用Bluebird这类库做兼容;
  2. 你之前报错「Uncaught ReferenceError: require is not defined」,是因为直接用了Node.js环境的AWS SDK写法(依赖require),但浏览器里没有这个Node专属的模块加载函数。

方案1:纯浏览器环境(无打包工具)

这种方式最直接,适合快速验证或简单项目:

  1. 按顺序加载依赖脚本
    先引入Bluebird,再引入AWS SDK的浏览器专用版本(不要用npm下载的Node版):

    <!-- 引入兼容IE11的Bluebird版本(3.x系列对IE11友好) -->
    <script src="https://cdn.jsdelivr.net/npm/bluebird@3.7.2/js/browser/bluebird.min.js"></script>
    <!-- 引入AWS SDK浏览器版(从AWS CDN或本地加载) -->
    <script src="https://sdk.amazonaws.com/js/aws-sdk-2.1000.0.min.js"></script>
    
  2. 配置AWS SDK使用Bluebird
    在你的业务代码里,告诉AWS SDK用Bluebird代替原生Promise:

    // 关键:让AWS SDK依赖Bluebird的Promise实现
    AWS.config.setPromisesDependency(Bluebird);
    
    // 接下来正常使用带Promise的AWS方法
    const s3Client = new AWS.S3({
      accessKeyId: '你的AccessKey',
      secretAccessKey: '你的SecretKey',
      region: '你的区域'
    });
    
    // 用promise()方法调用,Bluebird会处理IE11的兼容
    s3Client.listBuckets().promise()
      .then(response => {
        console.log('获取到的存储桶列表:', response.Buckets);
      })
      .catch(error => {
        console.error('请求出错:', error);
      });
    

方案2:用打包工具(Webpack/Browserify)

如果你的项目用了现代前端构建工具,可以这么处理:

  1. 安装依赖

    npm install aws-sdk bluebird --save
    
  2. 在代码中配置Promise依赖
    这里的require会被打包工具转换成浏览器能识别的代码,不会报错:

    const Bluebird = require('bluebird');
    const AWS = require('aws-sdk');
    
    // 同样指定Bluebird作为Promise实现
    AWS.config.setPromisesDependency(Bluebird);
    
    // 后续正常使用AWS SDK的Promise API即可
    const dynamoDb = new AWS.DynamoDB();
    dynamoDb.listTables().promise().then(/* ... */);
    
  3. 额外配置(针对IE11)
    记得在打包工具中配置Babel,转译ES6+语法到IE11支持的版本,同时确保Bluebird的代码被正确打包进去。


注意事项

  • Bluebird尽量选3.x版本,最新的4.x系列已经放弃了IE11支持;
  • AWS SDK的浏览器版可以从AWS官方CDN获取,也可以下载到本地托管,版本号可以根据需求调整;
  • 如果用打包工具,不要直接在浏览器中运行未打包的Node风格代码,必须经过构建流程转换。

内容的提问来源于stack exchange,提问作者Jesse Barnum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:11:04