2016-09-18 9 views
0

と私は私のリアクト - ネイティブアプリで新しいFirebaseインスタンスにフェッチAPI呼び出しを行うにしようとしていますが、私はこのエラーに実行しています:可能性のある未処理の約束拒絶は - リアクト - ネイティブFirebase

Possible Unhandled Promise Rejection (id: 0): 
Network request failed 
TypeError: Network request failed 
    at XMLHttpRequest.xhr.onerror (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:25119:8) 
    at XMLHttpRequest.dispatchEvent (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:10405:15) 
    at XMLHttpRequest.setReadyState (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:26688:6) 
    at XMLHttpRequest.__didCompleteResponse (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:26536:6) 
    at http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:26630:52 
    at RCTDeviceEventEmitter.emit (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:9638:23) 
    at MessageQueue.__callFunction (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7493:34) 
    at http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7375:8 
    at guard (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7306:1) 
    at MessageQueue.callFunctionReturnFlushedQueue (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7374:1) 

関数は次のようになります。

getNotes(username){ 
    username = username.toLowerCase().trim(); 
    var url = `https://myproject-6342.firebaseio.com/${username}.json`; 
    return fetch(url).then((res) => res.json()); 
    }, 
    addNote(username, note){ 
    username = username.toLowerCase().trim(); 
    var url = `https://myproject-6342.firebaseio.com/${username}.json`; 
    return fetch(url, { 
     method: 'post', 
     body: JSON.stringify(note) 
    }).then((res) => res.json()); 
    } 

ここで何が問題になりますか?

答えて

3

fetch APIの約束は、ネットワークエラーが発生した場合にTypeErrorで拒否されます。つまり、エラーを処理する必要があります。例:ここ

function _handleError(errorMessage) { 
    console.log(errorMessage); 
} 

fetch('https://api.github.com/users/octocat/repos').then(function(response) { 
    if(response.ok) { 
    return response.json(); 
    } else { 
    _handleError(`Oops, something went wrong: ${response.status}, ${response.statusText}`); 
    } 
}).then(function(data) { 
    if(data) { 
    console.log('success', data); 
    } 
}).catch(function(error) { 
    _handleError(`There has been a problem with your fetch operation: ${error.message}`); 
}); 

さらに詳しい情報:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#Checking_that_the_fetch_was_successful

関連する問題