Clearer HMR error messages
Summary: GraphNotFoundError: When the user moves the app to the background on Android, restarts the Metro server and reopens the app, since the client hasn't requested either a delta or a bundle, the graph cache of the server is empty and thus we can't compute an update for the client (what if changes happened when the metro server was down?). RevisionNotFoundError: I didn't manage to reproduce that one. It could happen if two clients live side-by-side, requesting the exact same bundle. In the future, if we want to handle that case, we'll need to manage a list of clients listening to a single graph so that we don't try to update the same graph multiple times for a single file change. Disconnection: Same as GraphNotFoundError, but happens when the user moves the app to the background on iOS. Reviewed By: mjesun Differential Revision: D12960939 fbshipit-source-id: 5ac1dc7fd12bad5e0ee8dfa5a21c112773454ee5
This commit is contained in:
parent
bea57d871f
commit
c787866d64
|
@ -89,7 +89,27 @@ Error: ${e.message}`;
|
||||||
|
|
||||||
hmrClient.on('error', data => {
|
hmrClient.on('error', data => {
|
||||||
HMRLoadingView.hide();
|
HMRLoadingView.hide();
|
||||||
throw new Error(`${data.type} ${data.message}`);
|
|
||||||
|
if (data.type === 'GraphNotFoundError') {
|
||||||
|
hmrClient.disable();
|
||||||
|
throw new Error(
|
||||||
|
'The packager server has restarted since the last Hot update. Hot Reloading will be disabled until you reload the application.',
|
||||||
|
);
|
||||||
|
} else if (data.type === 'RevisionNotFoundError') {
|
||||||
|
hmrClient.disable();
|
||||||
|
throw new Error(
|
||||||
|
'The packager server and the client are out of sync. Hot Reloading will be disabled until you reload the application.',
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
throw new Error(`${data.type} ${data.message}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
hmrClient.on('close', data => {
|
||||||
|
HMRLoadingView.hide();
|
||||||
|
throw new Error(
|
||||||
|
'Disconnected from the packager server. Hot Reloading will be disabled until you reload the application.',
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
hmrClient.enable();
|
hmrClient.enable();
|
||||||
|
|
Loading…
Reference in New Issue