在 React Native、Expo 应用程序中放大错误:[TypeError:未定义不是对象(评估'_awsAmplify.default.configure')]
我目前正在使用 Expo CLI 从头开发 React Native 应用程序。
我使用 AWS Amplify 设置后端。部署和拉取已完成,一切就绪。 我在项目根目录中有一个 amplify 文件夹。我在 ./src 文件夹中有一个 aws-export.js。 还安装了必要的库。
因此,一切准备就绪,可以使用 AWS Amplify 将我的 React Native 项目连接到后端。
根据 文档 ,我导入了 Amplify 和配置。
但是在我放置此行
Amplify.configure(config);
之后,我在终端中收到此错误:
TypeError:undefined 不是对象(评估“_awsAmplify.default.configure”)
因此,当放置以下代码行时会发生这种情况:
Amplify.configure(config);
如果我注释掉这一行,一切都没问题。
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;
我认为依赖项之间存在一些不兼容性。
这是我的 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
}
无论如何,还有另一个项目,不会产生此错误。当然,如您所见,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"
},
目前,我正在使用最新版本的库。我想尽可能避免软件包降级。
有人可以帮我吗?
提前谢谢您!
最后我找到了解决方案。
我使用了这个:
import Amplify from "aws-amplify";
但是 Expo 文档建议使用
@aws-amplify/core
而不是库
aws-amplify
。
因此正确的导入如下所示:
import Amplify from "@aws-amplify/core";
这解决了我的问题。
这是因为版本差异。删除以前的 aws-amplify 并添加 [email protected]
yarn remove aws-amplify && yarn add [email protected]
这对我有用:
import { Amplify } from "aws-amplify";
import amplifyconfig from "./amplifyconfiguration.json";
Amplify.configure(amplifyconfig);