javascript - 将 AWS 开发工具包与网络 worker 一起使用

标签 javascript cordova amazon-web-services amazon-s3 ionic-framework

这里是 ionic/cordova/angular 的菜鸟。上周开始,所以我在这里挣扎。我正在尝试从使用 Ionic 和 Cordova 创建的应用程序(在 iOS 上)上传文件。这些文件是图像,因此非常大。我想在后台工作线程中上传这些图像。因此需要网络 worker 。

图像必须上传到 Amazon S3。我的 worker javascript 文件中有以下代码。

onmessage = function(e) {
  importScripts("aws-sdk.min.js");
  console.log("Doing work");
  self.AWS.config.region = 'us-east-1';  //Error here. config is not defined :(
  self.AWS.config.update({accessKeyId: 'XXX', secretAccessKey: 'ABCD'});
  //More AWS stuff
  postMessage("DONE");
}

我的主要 javascript 文件都很好,因为我用非 AWS 配置(普通的旧 console.log("stuff here")) 进行了尝试,它运行良好。一旦我尝试使用 AWS SDK 执行任何操作,它就会开始失败。此外,aws-sdk.min.js 正在正确导入(至少 Chrome 在控制台上没有显示错误)。

最佳答案

啊哈,这似乎解决了我的问题http://www.jefferydurand.com/amazon/web/services/worker/2015/05/08/amazon-javascript-sdk-web-worker.html

有趣的是,它不适用于 aws-sdk-2.2.3,但适用于示例中显示的那个。

来自网站:

  // this was the trick I needed to get the aws sdk to load.
  // web workers don't have a 'window' object but the library assumes 
  // there is a window object
  window = {};
  importScripts('https://sdk.amazonaws.com/js/aws-sdk-2.1.27.min.js');

  // initialize our dynamodb table and get it ready to accept values
  window.AWS.config.update({accessKeyId: 'XXXXXXXXXX', secretAccessKey: 'XXXXXXXJJJJXXXXX'});
  window.AWS.config.region = 'us-east-1';
  var table = new window.AWS.DynamoDB({params: {TableName: 'song_player_metrics'}});

关于javascript - 将 AWS 开发工具包与网络 worker 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34305493/

相关文章:

javascript - nodejs导入需要转换

javascript - 如何使用 AngularJs 创建多重搜索

javascript - Ionic Windows 应用程序崩溃模拟器

android - phonegap运行android报错

database - 从 DynamoDB 中获取值

javascript - 如何让 JS 处理一个 div 的多个事件

javascript - 继续用鼠标拖动背景

cordova - iOS10.3.1 - 未找到 <Cord​​ova/CDVViewController.h> 文件 - 升级后

apache - CommonName 与服务器名称不匹配(Amazon EC2 上的 SSL)

amazon-web-services - 基于速率的 WAF 规则的云形成支持