contentful.js 使用 Axios 就是使用 localhost

contentful.js using Axios is using localhost

这有点烦人!我正在尝试将 Contentful SDK 用于 Angular Universal。 在此处的文档中:

https://github.com/contentful/contentful.js/blob/master/ADVANCED.md#angular-universal

并根据

https://github.com/patrickhousley/ngx-axios-adapter

我已经安装了 npm install @ngx-axios-adapter/core 然后我将我的服务调整为如下所示:

constructor(private readonly axiosAdapter: AxiosAngularAdapterService) {
    this.cdaClient = createClient({
        space: environment.space,
        accessToken: environment.cdaAccessToken,
        // pass the adapter to contentful
        adapter: this.axiosAdapter.adapter,
    });
}

问题是它没有调用 cdn: https://cdn.contentful.com instead it calls my localhost: http://localhost:4200 这真的很令人沮丧。 我不是唯一遇到这个问题的人,但我看不到任何人解决了这个问题。

我发现了另一个关于堆栈溢出的问题,他们决定直接使用 HttpClient 调用 API 我遇到的问题是链接条目显示为单独的对象,这样不好。

当我深入研究 SDK 时,我发现了一些我可以设置的有趣选项,即 hostbasePath,但设置这些没有任何作用。 然后我找到了一个 proxy 配置,它期望类型 AxiosProxyConfig 也有一个 host 参数。 我设置了所有这些:

constructor(private readonly axiosAdapter: AxiosAngularAdapterService) {
    this.cdaClient = createClient({
        space: environment.space,
        accessToken: environment.cdaAccessToken,
        host: 'https://cdn.contentful.com',
        basePath: 'something',
        proxy: {
            host: 'https://cdn.contentful.com',
        },
        // pass the adapter to contentful
        adapter: this.axiosAdapter.adapter,
    });
}

而且它没有任何区别。 有谁知道如何解决这个问题?

这是 ngx-axios-adapter 库的一个已知问题。这是一个解决方法:https://github.com/patrickhousley/ngx-axios-adapter/issues/13#issuecomment-627326291

this.client = createClient({
  space: appConfig.contentful.spaceId,
  accessToken: appConfig.contentful.token,
  adapter: (config) => {
    config.url = config.baseURL + '/' + config.url; // fix for Angular 9
    return this.axiosAdapter.adapter(config);
  }
});