Импорт Google Documentai вызывает много ошибок

avatar
Oatrick
9 августа 2021 в 04:13
17
0
0

Когда @google-cloud/documentai импортируется в приложение angular. Я получаю около 30 таких ошибок:

Error: Module not found: Error: Can't resolve 'https' in '/Users/user/Documents/impaxis/document-processing-widget/node_modules/tunnel-agent'

Я попытался установить все пакеты, но это тоже не помогло. Нужно ли запускать этот процесс в среде node.js или мне нужно использовать HttpClientModule для выполнения запроса, но когда я это сделал, я не смог найти никакой документации по ручному добавлению аутентификации в запрос? Кроме того, что касается исходной проблемы, как мне сделать этот вызов процессору наблюдаемым.

import { Injectable } from '@angular/core';
import { BehaviorSubject, Subject, Observable, of } from 'rxjs';
import { environment } from './../environments/environment';
import { DocumentProcessorServiceClient } from '@google-cloud/documentai';
@Injectable({
  providedIn: 'root',
})
export class FileService {
  private fileList: any[] = new Array<any>();
  private fileList$: Subject<any[]> = new Subject<any[]>();
  private processor: any;

  constructor() {
    this.processor = new DocumentProcessorServiceClient();
  }

  public async upload(fileContent: string): Promise<any> {
    const name = `projects/${environment.project}/locations/${environment.location}/processors/${environment.processor}`;

    const byteCharacters = atob(fileContent);
    const byteNumbers = new Array(byteCharacters.length);

    for (let i = 0; i < byteCharacters.length; i++) {
      byteNumbers[i] = byteCharacters.charCodeAt(i);
    }

    const byteArray = new Uint8Array(byteNumbers);

    const STRING_CHAR = byteArray.reduce((data, byte) => {
      return data + String.fromCharCode(byte);
    }, '');

    let base64String = btoa(STRING_CHAR);

    const request = {
      name,
      rawDocument: { content: base64String, mimeType: 'application/pdf' },
    };

    const result = await this.processor.processDocument(request);
    console.log(result);
  }

  public download(fileName: string): void {}

  public remove(fileName: string): void {
    this.fileList.splice(
      this.fileList.findIndex((name) => name === fileName),
      1
    );
    this.fileList$.next(this.fileList);
  }

  public list(): Observable<string[]> {
    return this.fileList$;
  }

  private addFileToList(fileName: string): void {
    this.fileList.push(fileName);
    this.fileList$.next(this.fileList);
  }
}
Источник

Ответы (0)