【问题标题】:Getting error "Node is not supported" using aws amplify datastore on react native and expo在 react native 和 expo 上使用 aws amplify 数据存储时出现错误“不支持节点”
【发布时间】:2020-03-30 20:00:07
【问题描述】:

AWS 在 re:invent 2019 上推出了 Amplify DataStore。Datastore 是一个持久的设备上存储库,供开发人员写入、读取和观察数据更改。

根据公告,Amplify DataStore 允许开发人员编写利用分布式数据的应用程序,而无需为离线或在线场景编写额外的代码。 Amplify DataStore 可用作 Web 和移动应用程序中的独立本地数据存储,无需连接到云,也无需拥有 AWS 账户。底层是连接到应用同步 graphQl API 的数据存储。令人敬畏的功能是易于使用和离线功能。另见公告https://aws.amazon.com/de/blogs/aws/amplify-datastore-simplify-development-of-offline-apps-with-graphql/ 或文档https://aws-amplify.github.io/docs/js/datastore

但是,amplify 支持流行的 Web 框架,例如 Angular、React 和 Vue。它还支持使用 React Native、iOS 的 Swift 或 Android 的 Java 开发的移动应用程序。

发布后,我有动力使用基于 react 原生应用和博览会的功能。

但是在 react native 和 expo 上使用 aws amplify 数据存储时出现错误“不支持节点”。

[Unhandled promise rejection: Error: Node is not supported]
- node_modules/@aws-amplify/datastore/dist/aws-amplify-datastore.js:63717:20 in getDefaultAdapter
- node_modules/@aws-amplify/datastore/dist/aws-amplify-datastore.js:63730:47 in Storage
- node_modules/@aws-amplify/datastore/dist/aws-amplify-datastore.js:64010:31 in ExclusiveStorage
- node_modules/@aws-amplify/datastore/dist/aws-amplify-datastore.js:61426:81 in <unknown>
- node_modules/@aws-amplify/datastore/dist/aws-amplify-datastore.js:60761:23 in step
- node_modules/@aws-amplify/datastore/dist/aws-amplify-datastore.js:60663:9 in <unknown>
- node_modules/promise/setimmediate/core.js:45:7 in tryCallTwo
- node_modules/promise/setimmediate/core.js:200:23 in doResolve
- node_modules/promise/setimmediate/core.js:66:12 in Promise
- node_modules/@aws-amplify/datastore/dist/aws-amplify-datastore.js:60642:34 in <unknown>
- node_modules/@aws-amplify/datastore/dist/aws-amplify-datastore.js:61204:17 in <unknown>
- node_modules/@aws-amplify/datastore/dist/aws-amplify-datastore.js:60761:23 in step
- node_modules/@aws-amplify/datastore/dist/aws-amplify-datastore.js:60663:9 in <unknown>
- node_modules/promise/setimmediate/core.js:45:7 in tryCallTwo
- node_modules/promise/setimmediate/core.js:200:23 in doResolve
- node_modules/promise/setimmediate/core.js:66:12 in Promise
- node_modules/@aws-amplify/datastore/dist/aws-amplify-datastore.js:60642:34 in <unknown>
* App.js:43:40 in loadData$

导入的数据存储和模型:

import { DataStore } from "@aws-amplify/datastore";
import { Post } from "./src/models";
import amplify from './aws-exports';
Amplify.configure(amplify);

并使用数据存储 API 创建加载数据:

  async loadData() {
    await DataStore.save(
      new Post({
        name: `My First Post`
      })
    ).catch(err => {
      console.error(err)
    });

    const posts = await DataStore.query(Post);
    console.log(posts)
  }

依赖关系:

    "dependencies": {
        "@aws-amplify/api": "^2.1.1",
        "@aws-amplify/core": "^2.2.0",
        "@aws-amplify/datastore": "^1.0.2",
        "@aws-amplify/pubsub": "^2.1.1",
        "aws-amplify": "1.2.2",
        "expo": "^35.0.0",
        "react": "16.8.3",
        "react-dom": "16.8.3",
        "react-native": "https://github.com/expo/react-native/archive/sdk-35.0.0.tar.gz",
        "react-native-web": "^0.11.7"
    }

【问题讨论】:

    标签: amazon-web-services react-native expo aws-amplify aws-appsync


    【解决方案1】:

    React Native 现在支持 DataStore。您可以在此处找到安装说明:https://aws-amplify.github.io/docs/js/datastore#for-react-native

    【讨论】:

      【解决方案2】:

      这个库还没有为 React Native 准备好,此时 参考:https://github.com/aws-amplify/amplify-js/issues/4527

      【讨论】:

      • 是的,请在上面的 GitHub 问题上跟踪状态。在跨不同 React Native 版本发布之前使用未发布的桥有一些困难(因为 RN 上的 DataStore 将使用与 iOS/Android 使用相同的存储适配器),因此我们需要先完成发布。现在它已经结束了,我们可以在这里缩小差距,以获得 React Native 体验,以解决添加桥和链接的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-29
      • 1970-01-01
      相关资源
      最近更新 更多