diff --git a/Libraries/WebSocket/RCTWebSocketExecutor.m b/Libraries/WebSocket/RCTWebSocketExecutor.m index b256374fc59bf7..06217d886abeef 100644 --- a/Libraries/WebSocket/RCTWebSocketExecutor.m +++ b/Libraries/WebSocket/RCTWebSocketExecutor.m @@ -158,10 +158,7 @@ - (void)sendMessage:(NSDictionary *)message onReply:(RCTWSMessag dispatch_async(_jsQueue, ^{ if (!self.valid) { - NSError *error = [NSError errorWithDomain:@"WS" code:1 userInfo:@{ - NSLocalizedDescriptionKey: @"Runtime is not ready for debugging. Make sure Packager server is running." - }]; - callback(error, nil); + callback(RCTErrorWithMessage(@"Runtime is not ready for debugging. Make sure Packager server is running."), nil); return; } @@ -180,8 +177,13 @@ - (void)executeApplicationScript:(NSData *)script sourceURL:(NSURL *)URL onCompl @"url": RCTNullIfNil(URL.absoluteString), @"inject": _injectedObjects, }; - [self sendMessage:message onReply:^(NSError *error, NSDictionary *reply) { - onComplete(error); + [self sendMessage:message onReply:^(NSError *socketError, NSDictionary *reply) { + if (socketError) { + onComplete(socketError); + } else { + NSString *error = reply[@"error"]; + onComplete(error ? RCTErrorWithMessage(error) : nil); + } }]; } @@ -218,9 +220,10 @@ - (void)_executeJSCall:(NSString *)method arguments:(NSArray *)arguments callbac return; } - NSString *result = reply[@"result"]; - id objcValue = RCTJSONParse(result, NULL); - onComplete(objcValue, nil); + NSError *jsonError; + id result = RCTJSONParse(reply[@"result"], &jsonError); + NSString *error = reply[@"error"]; + onComplete(result, error ? RCTErrorWithMessage(error) : jsonError); }]; } diff --git a/local-cli/server/util/debuggerWorker.js b/local-cli/server/util/debuggerWorker.js index 0feb8c079241a9..c05f558d87962b 100644 --- a/local-cli/server/util/debuggerWorker.js +++ b/local-cli/server/util/debuggerWorker.js @@ -39,7 +39,7 @@ onmessage = (function() { try { importScripts(message.url); } catch (err) { - error = JSON.stringify(err); + error = err.message; } sendReply(null /* result */, error); }, @@ -66,12 +66,17 @@ onmessage = (function() { } else { // Other methods get called on the bridge var returnValue = [[], [], [], 0]; + var error; try { if (typeof __fbBatchedBridge === 'object') { returnValue = __fbBatchedBridge[object.method].apply(null, object.arguments); + } else { + error = 'Failed to call function, __fbBatchedBridge is undefined'; } + } catch (err) { + error = err.message; } finally { - sendReply(JSON.stringify(returnValue)); + sendReply(JSON.stringify(returnValue), error); } } };