内容丰富 Javascript SDK 和 NativeScript

Contentful Javascript SDK and NativeScript

我正在努力让 JavaScript Contentful SDK 在我的 Nativescript 应用程序中运行。可悲的是,我是 NativeScript 的新手,所以可能缺少一些基本的东西。希望有人能帮忙:)

该模块以常规方式安装在我的 NativeScript 项目中:

npm install contentful

然后我制作了一个简单的模块(基于我在 Github https://github.com/contentful-labs/product-catalogue-web.ts 找到的示例):

import {ContentfulClientApi, createClient} from 'contentful';

export class ContentfulService {
      cdaClient: ContentfulClientApi;
      constructor() {

         this.cdaClient = createClient({
             space: 'spaceId',
             accessToken: 'token'
         });
      }
      getContent() {
          this.cdaClient.getContentTypes()
          .then(function(response) { 
            console.log(response.items);
            return response.items;
        })
      }
  }

并且在 NativeSctipt 视图模型中:

import { ContentfulService } from "../shared/cms";

let cms = new ContentfulService();
cms.getContent();

...但是没有任何反应。没有错误或调试输出,但是本机脚本视图模型根本不执行任何操作——代码不执行。如果我从构造函数中删除 createClient() 代码,我只是在 getContent() 中放置了一个 console.log,那么当我从视图模型调用 getContent() 时,console.log 会按预期工作

如果我在 NativeScript 之外尝试这个,例如使用 Contentful 仪表板中的样板节点项目,按预期工作。

我想使用 SDK 的原因是我需要通过同步支持离线内容,而 SDK 似乎使这很容易(如果我能让它工作的话!)。

感谢您的帮助

我没有使用 NativeScript 的具体经验,但因为它只是在底层使用 TypeScript / JavaScript:

getContent 必须 return Contentful 客户回馈的承诺:

return this.cdaClient.getContentTypes()
.then(...)

这里可能发生的是,returned Promise 被拒绝,但由于它没有在其他地方使用并且没有分配 catch 块,它被默默地吞没了。

return this.cdaClient.getContentTypes()
.then(...)
.catch(function (error) {
  console.error(error)
})

所以 Contentful SDK 似乎与 Native Script 不兼容,所以现在我打算换用 React Native。您可以将 fetch 与 Contentful REST API 一起使用,但我想要一些额外的 SDK 功能,例如离线缓存。