我正在努力让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似乎很容易实现(如果我能让它工作的话!) .
谢谢你的帮助
2 回答
我没有使用NativeScript的特定经验,但因为它只是在引擎盖下使用TypeScript / JavaScript:
getContent
必须返回Contentful客户端返回的Promise:这里可能发生的是,返回的Promise拒绝,但因为它没有在其他地方使用并且没有分配
catch
块,所以它被静默吞噬 .因此,似乎Contentful SDK与Native Script不兼容,所以现在我将交换使用React Native . 您可以在Contentful REST API中使用fetch,但我在使用了一些额外的SDK功能,例如离线缓存 .