将AWS开发工具包与Web Worker一起使用

Sat*_*was 5 javascript amazon-s3 amazon-web-services cordova ionic-framework

离子/科尔多瓦/角形上的总菜鸟皮。从上周开始,所以我在这里苦苦挣扎。我正在尝试从使用Ionic和Cordova创建的应用程序(在iOS上)上载文件。这些文件是图像,因此非常大。我想在后台工作线程中上传这些图像。因此,需要网络工作者。

图像必须上传到Amazon S3。我的工作者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");
}
Run Code Online (Sandbox Code Playgroud)

我的主要javascript文件一切正常,因为我在非AWS的配置中尝试了该文件(纯旧版本console.log("stuff here")),并且运行良好。一旦我尝试对AWS开发工具包执行任何操作,它就会开始失败。此外,该文件aws-sdk.min.js已正确导入(Chrome至少在控制台上没有显示错误)。

Sat*_*was 1

啊哈,这似乎解决了我的问题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'}});
Run Code Online (Sandbox Code Playgroud)