放大错误:React Native、Expo 应用程序中的 [TypeError: undefined is not an object (evaluating '_awsAmplify.default.configure')]

Las*_*rga 0 react-native expo aws-amplify

我目前正在使用 Expo CLI 从头开始​​开发 React Native 应用程序。

我使用 AWS Amplify 设置后端。部署和拉取已完成,一切就位。我在项目根目录中有放大文件夹。我的 ./src 文件夹中有 aws-export.js 。还安装了必要的库。

现在一切准备就绪,可以使用 AWS Amplify 将我的 React Native 项目连接到后端。

根据文档,我导入了 Amplify 和 config。

但是在我放置此行后,Amplify.configure(config);我在终端中收到此错误:TypeError: undefined is not an object (evaluating '_awsAmplify.default.configure')

所以当输入这行代码时就会发生这种情况:

Amplify.configure(config);
Run Code Online (Sandbox Code Playgroud)

如果我注释掉这一行,一切都好。

App.js 非常简单:

import { View, Text } from "react-native";

import Amplify from "aws-amplify";
import config from "./src/aws-exports";

Amplify.configure(config);

const App = () => {
  return (
    <View>
      <Text>Hello World</Text>
    </View>
  );
};

export default App;
Run Code Online (Sandbox Code Playgroud)

我认为依赖关系之间存在一些不兼容。

这是我的 package.json:

{
  "name": "authentication",
  "version": "1.0.0",
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web"
  },
  "dependencies": {
    "@aws-amplify/cli": "^10.4.1",
    "@react-native-async-storage/async-storage": "^1.17.11",
    "@react-native-community/netinfo": "9.3.5",
    "@react-navigation/native": "^6.0.13",
    "@react-navigation/native-stack": "^6.9.1",
    "amazon-cognito-identity-js": "^6.0.1",
    "aws-amplify": "^5.0.1",
    "expo": "~47.0.3",
    "expo-status-bar": "~1.4.2",
    "react": "18.1.0",
    "react-hook-form": "^7.39.3",
    "react-native": "0.70.5",
    "react-native-safe-area-context": "4.4.1",
    "react-native-screens": "~3.18.0"
  },
  "devDependencies": {
    "@babel/core": "^7.12.9"
  },
  "private": true
}
Run Code Online (Sandbox Code Playgroud)

无论如何,还有另一个项目,不会产生此错误。当然,package.json 中的版本号有点不同,如您所见:

旧项目的 package.json:

"dependencies": {
    "@aws-amplify/cli": "^10.4.0",
    "@react-native-async-storage/async-storage": "^1.17.10",
    "@react-native-community/netinfo": "9.3.0",
    "@react-native-picker/picker": "2.4.2",
    "amazon-cognito-identity-js": "^5.2.12",
    "aws-amplify": "^4.3.43",
    "aws-amplify-react-native": "^6.0.8",
    "expo": "~46.0.16",
    "expo-status-bar": "~1.4.0",
    "react": "18.0.0",
    "react-native": "0.69.6",
    "react-native-gesture-handler": "~2.5.0",
    "react-native-reanimated": "~2.9.1"
  }, 
Run Code Online (Sandbox Code Playgroud)

目前我正在使用最新版本的库。我想尽可能避免软件包降级。

有人可以帮我吗?

先感谢您!

Las*_*rga 6

最后我找到了解决方案。

我用过这个:import Amplify from "aws-amplify";

但世博会文档建议@aws-amplify/core不要使用 Library aws-amplify

所以正确的导入看起来像这样:import Amplify from "@aws-amplify/core";

这解决了我的问题。