首页 > 解决方案 > AWS Amplify 登录错误 - 登录错误... [TypeError: (0, _getRandomBase.default) 不是函数

问题描述

我已经设置了一个简单的 React-native 应用程序,它使用 AWS Amplify 来处理身份验证。

注册功能工作正常,但是当我尝试登录时,我在控制台中收到此错误:

Error signing in... [TypeError: (0, _getRandomBase.default) is not a function. (In '(0, _getRandomBase.default)(array.byteLength)', '(0, _getRandomBase.default)' is undefined)]

我在网上发现了一个类似的帖子,同样的错误,但在尝试了每一个建议的修复后,我决定在这里提问。下面是我的 package.json 文件。

  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web",
    "eject": "expo eject"
  },
  "dependencies": {
    "@react-native-community/masked-view": "^0.1.10",
    "@react-native-community/netinfo": "^6.0.0",
    "@react-navigation/native": "^5.9.4",
    "@react-navigation/stack": "^5.14.4",
    "amazon-cognito-identity-js": "^4.6.0",
    "aws-amplify": "^3.3.27",
    "aws-amplify-react-native": "^4.3.2",
    "expo": "~41.0.1",
    "expo-status-bar": "~1.0.4",
    "joi": "^17.4.0",
    "react": "^17.0.1",
    "react-dom": "^17.0.1",
    "react-native": "https://github.com/expo/react-native/archive/sdk-39.0.2.tar.gz",
    "react-native-gesture-handler": "~1.10.2",
    "react-native-reanimated": "^2.1.0",
    "react-native-safe-area-context": "3.2.0",
    "react-native-screens": "~3.0.0",
    "react-native-web": "^0.16.0"
  },
  "devDependencies": {
    "@babel/core": "^7.13.16",
    "webpack-cli": "^4.6.0"
  },
  "private": true
}

建议我删除我的 node_modules 文件夹并使用重新安装它们,npm install但这并没有解决错误。我正在使用 Expo FYI 测试我的应用程序。您会注意到我已将反应版本指定为 39.0.02。这是因为在测试我的应用程序时出现错误,这是由 react-native-reanimated 引起的,指定版本修复了这个其他错误:https ://forums.expo.io/t/error-on-launching-android-app-动画节点与标签 1 不存在/50053

这是我尝试过的建议修复 - https://github.com/aws-amplify/amplify-js/issues/7191

标签: javascriptreact-nativeamazon-cognitoaws-amplify

解决方案


就我而言,我找到了解决此问题的解决方法。如果您使用 Expo,请查看此链接:https ://github.com/aws-amplify/amplify-js/issues/8113

在这里,有一个修复程序可以在启动 Expo 之前更改其环境变量。这解决了我遇到的登录/身份验证问题。我希望这可以帮助其他有同样问题的人。

问题是由以下原因引起的:

Expo 弃用 *.expo.js 文件类型处理,amazon-cognito-identity-js 正在使用。

您可以设置的环境变量是EXPO_LEGACY_IMPORTS,因此如果您像下面这样启动 Expo,它应该可以再次工作:

EXPO_LEGACY_IMPORTS=1 expo start


推荐阅读