# #node.js #angular #google-cloud-platform #rxjs
Вопрос:
Когда @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);
}
}