Загрузить в хранилище BLOB-объектов Azure - this.blobStorage.createBlobServiceWithSas не является функцией - PullRequest
0 голосов
/ 06 марта 2019

Я следил за этой статьей , чтобы разрешить мне загружать файл непосредственно в хранилище BLOB-объектов Azure.Но в настоящее время я получаю ошибку

"this.blobStorage.createBlobServiceWithSas не является функцией"

После подтверждения того, что я не пропустил инструкцию, я посмотрел на источниккод для учебника в GitHub , я увидел разницу

AppModule.ts в учебнике

declare var AzureStorage: IAzureStorage;

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule],
  providers: [
    BlobStorageService,
    {
      provide: BLOB_STORAGE_TOKEN,
      useValue: AzureStorage.Blob
    }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

AppModule в GitHub

export function azureBlobStorageFactory(): IBlobStorage {
  return window['AzureStorage'].Blob;
}

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule],
  providers: [
    BlobStorageService,
    {
      provide: BLOB_STORAGE_TOKEN,
      useFactory: azureBlobStorageFactory
    }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

Я соответствующим образом обновил свой код, но все равно не повезло.

Затем я добавил точку останова, чтобы остановить выполнение до вызова this.blobStorage .createBlobServiceWithSas.На этом этапе я запускаю window['AzureStorage'] в консоли, и он возвращает неопределенное значение.

Может кто-нибудь сообщить мне, что я делаю неправильно?

РЕДАКТИРОВАТЬ:

Вangular.json Я добавил нужный файл.Поэтому, если я запускаю window['AzureStorage'].Blob в консоли, я получаю объект, который могу использовать, но я все равно получаю ту же ошибку, что и ранее в моей базе кода

{
  ...
  "projects": {
    "Client": {
      ...
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            ...
            "scripts": [
              "src/assets/azure-storage/azure-storage.blob.js"
            ]
          },
   ...
}

1 Ответ

0 голосов
/ 06 марта 2019

Моей первой проблемой было то, что я не обновил angular.json, чтобы включить скрипт azure-storage.blob.js (я обновил это в вопросе после внесения этого изменения).Мне также нужно было изменить способ заполнения app.module.ts службы следующим образом:

с этого

export function azureBlobStorageFactory(): IBlobStorage {
  return window['AzureStorage'].Blob;
}

@NgModule({
  ...
  providers: [
    AzureBlobStorageService,
    {
      provide: BLOB_STORAGE_TOKEN,
      useValue: azureBlobStorageFactory()
    }
  ...

на этот

@NgModule({
  ...
  providers: [
    AzureBlobStorageService,
    {
      provide: BLOB_STORAGE_TOKEN,
      useValue: window['AzureStorage'].Blob
    }
  ...
...