在 react native 和 expo 上使用 aws 放大数据存储出现错误“不支持节点”

Sma*_* Ma 5 amazon-web-services react-native expo aws-appsync aws-amplify

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/或 doc https://aws-amplify.github.io /docs/js/datastore

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

宣布后,我有动力使用基于 React Native 应用程序和博览会的功能。

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

[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$
Run Code Online (Sandbox Code Playgroud)

导入的数据存储和模型:

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

并使用数据存储 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)
  }
Run Code Online (Sandbox Code Playgroud)

依赖项:

    "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"
    }
Run Code Online (Sandbox Code Playgroud)

小智 4

该库尚未准备好用于 React Native,目前参考: https: //github.com/aws-amplify/amplify-js/issues/4527