【发布时间】:2020-07-06 18:03:42
【问题描述】:
我的资产文件夹中有两个用于存储重要密钥的文本文件:apiKey.txt 和 appId.txt。这些都只包含纯文本
我正在使用 http 客户端来检索它们,但它们仍然注册为未定义。谁能看到我错过了什么?
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { retry, catchError } from 'rxjs/operators';
//import { iDynamicsPostUsers } from '../models/dynamics-post';
@Injectable({
providedIn: 'root'
})
export class AirtableService {
private apiUrl = 'https://api.airtable.com/v0/';
protected apiKey: string;
protected appId: string;
constructor(private http: HttpClient) {
this.http.get('assets/apiKey.txt', { responseType: 'text'}).subscribe(data => { this.apiKey = data });
this.http.get('assets/appId.txt', { responseType: 'text'}).subscribe(data => { this.appId = data });
}
}
【问题讨论】:
-
您的代码对我有用。您绝对应该检查 DevTools 网络选项卡并直接在浏览器中试用该 URL,例如。 G。
http://localhost:4200/assets/apiKey.txt. -
当我直接在浏览器中尝试时,该 url 有效。虽然在我的 Angular 应用程序中仍然显示为未定义
-
DevTools 网络面板说什么?它是否显示正确的请求?您是否为 HttpClient 使用任何拦截器?
-
网络面板显示对每个文件的 3 次调用,所有这些调用都返回 304。响应显示正确的返回值,但在角度应用程序中仍未定义
-
我真的不知道什么不适合你。见这里:stackblitz.com/edit/angular-ivy-lrv3ra