Skip to content

Commit 2e42842

Browse files
javachefacebook-github-bot
authored andcommitted
Handle fatal errors thrown by the Chrome debugger
Reviewed By: mmmulani Differential Revision: D5219190 fbshipit-source-id: 16cff0e08de9c53d7a3e10897ddec3e6924c3bf5
1 parent 947d77d commit 2e42842

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

Libraries/WebSocket/RCTWebSocketExecutor.m

+12-9
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,7 @@ - (void)sendMessage:(NSDictionary<NSString *, id> *)message onReply:(RCTWSMessag
158158

159159
dispatch_async(_jsQueue, ^{
160160
if (!self.valid) {
161-
NSError *error = [NSError errorWithDomain:@"WS" code:1 userInfo:@{
162-
NSLocalizedDescriptionKey: @"Runtime is not ready for debugging. Make sure Packager server is running."
163-
}];
164-
callback(error, nil);
161+
callback(RCTErrorWithMessage(@"Runtime is not ready for debugging. Make sure Packager server is running."), nil);
165162
return;
166163
}
167164

@@ -180,8 +177,13 @@ - (void)executeApplicationScript:(NSData *)script sourceURL:(NSURL *)URL onCompl
180177
@"url": RCTNullIfNil(URL.absoluteString),
181178
@"inject": _injectedObjects,
182179
};
183-
[self sendMessage:message onReply:^(NSError *error, NSDictionary<NSString *, id> *reply) {
184-
onComplete(error);
180+
[self sendMessage:message onReply:^(NSError *socketError, NSDictionary<NSString *, id> *reply) {
181+
if (socketError) {
182+
onComplete(socketError);
183+
} else {
184+
NSString *error = reply[@"error"];
185+
onComplete(error ? RCTErrorWithMessage(error) : nil);
186+
}
185187
}];
186188
}
187189

@@ -218,9 +220,10 @@ - (void)_executeJSCall:(NSString *)method arguments:(NSArray *)arguments callbac
218220
return;
219221
}
220222

221-
NSString *result = reply[@"result"];
222-
id objcValue = RCTJSONParse(result, NULL);
223-
onComplete(objcValue, nil);
223+
NSError *jsonError;
224+
id result = RCTJSONParse(reply[@"result"], &jsonError);
225+
NSString *error = reply[@"error"];
226+
onComplete(result, error ? RCTErrorWithMessage(error) : jsonError);
224227
}];
225228
}
226229

local-cli/server/util/debuggerWorker.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ onmessage = (function() {
3939
try {
4040
importScripts(message.url);
4141
} catch (err) {
42-
error = JSON.stringify(err);
42+
error = err.message;
4343
}
4444
sendReply(null /* result */, error);
4545
},
@@ -66,12 +66,17 @@ onmessage = (function() {
6666
} else {
6767
// Other methods get called on the bridge
6868
var returnValue = [[], [], [], 0];
69+
var error;
6970
try {
7071
if (typeof __fbBatchedBridge === 'object') {
7172
returnValue = __fbBatchedBridge[object.method].apply(null, object.arguments);
73+
} else {
74+
error = 'Failed to call function, __fbBatchedBridge is undefined';
7275
}
76+
} catch (err) {
77+
error = err.message;
7378
} finally {
74-
sendReply(JSON.stringify(returnValue));
79+
sendReply(JSON.stringify(returnValue), error);
7580
}
7681
}
7782
};

0 commit comments

Comments
 (0)