Как использовать aws -sdk внутри веб-воркера Angular 9? - PullRequest
3 голосов
/ 01 августа 2020
I installed aws-sdk :- npm install aws-sdk

И затем импортировал aws -sdk внутри моего рабочего файла следующим образом:

app.worker.ts :- import * as AWS from 'aws-sdk';

И затем попытался console.log внутри кода addEventListener здесь: -

    addEventListener('message', async ({ data }) => {
    console.log(AWS);
}

После этого я получаю ошибки, как на скриншоте:

введите описание изображения здесь

Я также попытался решить эту ошибку для того, что я определил global в polyfills.ts, хотя он не работает

polyfills.ts :- (window as any).global = window;

Любая помощь будет принята с благодарностью . Я пытаюсь загрузить файл из рабочего, используя aws -sdk, в s3 из моего проекта angular. Спасибо, ребята!

1 Ответ

1 голос
/ 03 августа 2020

Это может помочь и другим, поэтому я предлагаю решения, как я решил проблему: -

Веб-воркеры не имеют глобального объекта window. Поэтому для доступа к глобальному объекту мы можем вместо этого использовать self.

Итак, чтобы решить свою проблему, я выполнил следующие шаги:

Шаги: -

  • В app.worker.ts, чтобы использовать файлы определения Type-Script с глобальным объектом AWS во внешнем проекте. Мы должны добавить ссылочные типы вверху рабочего файла, например, /// <reference types="aws-sdk" />.

  • Определить окно const window = self;

  • И после которые импортируют aws -sdk scripts importScripts('assets/js/aws-sdk.js');, тогда мы сможем получить доступ к объекту AWS внутри addEventListener('message', async ({ data }) => { console.log(window.AWS) });

  • Здесь я импортирую скрипты из ресурсов, потому что у меня на настроенный aws -sdk, чтобы избежать ошибки, связанной с определением окна при вызове s3.createMultipartUpload()

  • Вот ссылка https://raw.githubusercontent.com/nyaupane/customized_aws_sdk/master/assets/js/aws-sdk.js настроенного aws_sdk на случай, если ваше требование такое же, как мое, в противном случае вы можете настроить в соответствии с вашими требованиями.

  • Окончательный app.worker.ts будет выглядеть так: https://github.com/nyaupane/customized_aws_sdk/blob/master/assets/worker/app.worker.ts

Теперь он работает идеально подходит для многостраничной загрузки ... с использованием aws_sdk в веб-воркере angular9.

...