2015-09-12 10 views
6

Chromeのデバッガを開いた状態で正常に動作するReact Nativeアプリがあります。私もそれを無効にしたら、私が作ろうとするたびに、私は次のエラーを取得しておく任意の解析コール:ParseがReact NativeでlocalStorage変数を見つけられない

Parse.User.logIn(
    email, 
    password, 
    { 
    success: function(res) { 
     console.log('success'); 
    }, 
    error: function(error) { 
     console.log(error.code + ' ' + error.message); 
    } 
    } 
); 

React Native and Parse error

コールスタックは、ユーザーがログインしようと、次のコードに戻ってしまいます

コンソールのステートメントを削除しようとしましたが、エラーはコンソールが利用できない場合に備えて使用できますが、役に立たない場合があります。これは他のParse呼び出しで発生し、常に不足しているlocalStorage変数と関係しています。

ありがとうございました!

更新:

Firebaseと同様の問題があるようです。 https://groups.google.com/forum/#!topic/firebase-talk/Y_usPRhOIYA

は、彼らは問題があるのlocalStorage用ポリフィルされていないとしなければならないことを言及します。

答えて

10

上記の回答は技術的には正しいですが、Parseはpolyfilまたはdowngradingを必要としないソリューションを提供しています。これは私の永久的な読書の不足によるものです。私はParse React docs上でこれを見つけた:たとえば

As of version 1.6, the Parse JS SDK has a different build for React Native. If you're using Parse+React on React Native, you'll need to require the 'parse-react/react-native' package instead.

:私は解析が同様にリアクト使用していた言及していないため

// For React Native apps 
var React = require('react-native'); 
var Parse = require('parse/react-native'); 
var ParseReact = require('parse-react/react-native'); 

申し訳ありません。 Parse Reactを介してデータ購読を追加し始めていないので、問題はParseだけであると私は考えました。

+1

Parse v1.6.4とReact-Native v2.14.3を使用しています。ここに示すように要求を試すと、次のエラーが発生します。 '不明なモジュールを要求する" parse-react/react-native "。 'モジュールがあることが確かな場合は、パッケージャを再起動してみてください。 元のポスターと同じように、オリジナルを使用すると、以下が含まれます: 'var Parse = require( 'parse')。 'var ParseReact = require( 'parse-react'); は、デバッグモードで、iOSエミュレータでは動作しますが、Androidエミュレータや実​​際のデバイスでは、コードは常にlocalStorageが見つからないと不平を言っても正常に動作します。 –

2

これは正しいです(ポリフィルを使用)。 polyfillとして追加されたlocalStorageもAppleの組み込みjavascriptCoreエンジンにはlocalStorageが実装されていません(Chromeのv8で実装されています)。主な理由は、localStorageは同期であり、Reactは設計上の非同期操作でのみ動作する必要があります。

メモリ内のバージョンとのlocalStorageを置き換え素敵なソリューション/ミニポリフィルがあります:https://gist.github.com/juliocesar/926500が。これは、キャッシュのためにlocalstorageを解析する必要があります(これは私が今信じている主な目的です)。データは、アプリケーションの実行間に永続的に格納されません。 Parseでlocalstorageの使用を無効にできるかどうかはわかりませんが、それはもう一つの可能​​性です。

2

私は1.5.0にダウングレードされました。

"dependencies": { 
    "parse": "1.5.0", 
1

Parse + Reactの使用を余儀なくされても十分な解決策ではないとは思いません。たとえば、私はReduxで自分のアプリを構築していますが、自分のアクションクリエイターの中にすべてのAPIリクエストを保存するのはもっと意味があります。

1.6.0 Parseでは、React Nativeがローカルストレージをサポートしていない場合、ローカルストレージを使用するように強制しています。しかし、React NativeはAsyncStorageをサポートしています。

私の場合、私は1.5にダウングレードしましたが、将来的にローカルストレージまたは非同期ストレージを使用するオプションが提供されることを願っています。

これは、これに遭遇し、強制的にあなたの答えを解析して反応させたくない人は、あなたのpackage.json"parse": "1.5.0"に変更すると、1.5にダウングレードすることです。

関連する問題