无法读取未定义的 React Native 和 Parse 的 属性 'getItem'

Cannot read property 'getItem' of undefined React Native and Parse

我已经开始使用 Redux 学习 React Native,我正在使用 Google 和 Facebook 登录构建一个简单的登录,我想将其发送到 AWS 上的 Parse 后端。

我有以下 Facebook 按钮组件:

import { Button } from 'react-native';
import { connect } from 'react-redux';
import React, { Component } from 'react';
import { LoginManager } from 'react-native-fbsdk';
import { createUser } from '../actions';

class FacebookButton extends Component {

  facebookButtonPressed(){
      this.props.createUser("dummyemail@gmail.com","12345");
  }

  render() {
    return (
      <Button
          onPress={this.facebookButtonPressed.bind(this)}
          title="Sign In with Facebook"
          color="#000000"
      />
    );
  }

}

export default connect(null,{ createUser })(FacebookButton);

我还没有做任何 Facebook 集成,我只是想看看我是否可以创建一个解析用户。这是我正在使用的操作:

import Parse from 'parse/react-native';

export const createUser = (email, name) => {
    return (dispatch) => {

      var user = new Parse.User();
      user.set("username", "my name");
      user.set("password", "my pass");
      user.set("name",name);
      user.set("email", email);

      // other fields can be set just like with Parse.Object
      user.set("phone", "415-392-0202");

      user.signUp(null, {
        success: function(user) {
          // Hooray! Let them use the app now.
          console.log("User created");
        },
        error: function(user, error) {
          // Show the error message somewhere and let the user try again.
          alert("Error: " + error.code + " " + error.message);
        }
      });


    }
};

当我在浏览器中 运行 调试器时,我能够看到 createUser 被调用,当我们调用 user.signUp 时,我得到以下错误:

undefined is not an object (evaluating 'reactNative.AsyncStorage.getItem')

当我阅读 Parse Javascript 文档并尝试以下操作时:

//Get your favorite AsyncStorage handler with import (ES6) or require
import { AsyncStorage } from 'react-native'; 

//Before using the SDK...
Parse.setAsyncStorage(AsyncStorage);

我在下面的代码中调用 Parse.setAsyncStorage(AsyncStorage);

import ReduxThunk from 'redux-thunk';
import reducers from './src/reducers';
import Parse from 'parse/react-native';
import { Provider } from 'react-redux';
import Login from './src/screens/Login';
import React, { Component } from 'react';
import { AsyncStorage } from 'react-native';
import { createStore, applyMiddleware } from 'redux';

export default class App extends Component {

  componentWillMount() {
      Parse.initialize("MY KEY");
      Parse.serverURL = 'MY URL';
      Parse.setAsyncStorage(AsyncStorage);
  }

  render() {
    const store = createStore(reducers, {}, applyMiddleware(ReduxThunk));

    return (
      <Provider store={store}>
        <Login />
      </Provider>
    );
  }
}

我收到 reactNative2.default.setAsyncStorage is not a function 的错误。坦率地说,我尝试了 Parse.setAsyncStorage(AsyncStorage);,希望能解决上面提到的 AsyncStorage 问题。

关于为什么我在尝试创建 Parse 用户时收到有趣的 AsyncStorage 错误消息有什么想法吗?

我在这里留下答案,以防其他人遇到任何其他问题。问题是我使用的 Parse 版本。我使用的是 Parse 版本 1.6.14。修复步骤:

  1. 打开 package.json 文件并将您的 Parse 版本更新为高于 1.11 的任何版本,对我来说 1.11.1 成功了。
  2. 在终端中:npm install

这应该可以解决上述问题,请记住您必须实施:

//Get your favorite AsyncStorage handler with import (ES6) or require
import { AsyncStorage } from 'react-native'; 

//Before using the SDK...
Parse.setAsyncStorage(AsyncStorage);

根据文档。