【问题标题】:Contentful Javascript SDK and NativeScript内容丰富的 Javascript SDK 和 NativeScript
【发布时间】:2018-01-14 13:48:39
【问题描述】:

我正在努力让 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();

...但什么也没发生。没有错误或调试输出,但是 Native Script 视图模型根本不做任何事情 - 代码不执行。如果我从构造函数中删除了createClient() 代码,并且我只是在getContent() 中添加了一个console.log,那么当我从视图模型中调用getContent() 时console.log 会按预期工作

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

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

感谢您的帮助

【问题讨论】:

    标签: javascript node.js nativescript contentful


    【解决方案1】:

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

    getContent 必须返回 Contentful 客户端返回的 Promise:

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

    这里可能发生的情况是,返回的 Promise 被拒绝,但由于它没有在其他地方使用并且没有分配 catch 块,所以它被默默吞下。

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

    【讨论】:

    • 谢谢 - 我认为你绝对是正确的 - 但它并没有解决它。我一直在尝试更多,我认为可能是 Contentful SDK 使用了 npm 模块,这可能无法与 NativeScript 一起使用(请参阅nativescript.org/blog/…)。
    • 奇怪的是,当整个模块不可用时,它会默默吞下。使用nativescript-nodeify 有效果吗?
    • 它没有修复它,但它确实在启动模块时产生了崩溃,窗口未定义。看起来 Contentful sdk 将本机脚本应用程序检测为浏览器,当然不是。我想我必须换成使用 React Native ....
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多