mirror of
https://github.com/status-im/react-native.git
synced 2025-01-09 17:15:54 +00:00
54f2586735
Summary: public If Hot Loading is enabled bu the packager server is not running, as the user updates files he'll see red boxes caused by the HMR runtime. The error those red boxes show is pretty weird for the end user. Lets improve the feedback we give!. Reviewed By: vjeux Differential Revision: D2795534 fb-gh-sync-id: dcc39e6682e0603bf10d0f5e623433262b745660
58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*
|
|
* @providesModule HMRClient
|
|
*/
|
|
'use strict';
|
|
|
|
const invariant = require('invariant');
|
|
|
|
/**
|
|
* HMR Client that receives from the server HMR updates and propagates them
|
|
* runtime to reflects those changes.
|
|
*/
|
|
const HMRClient = {
|
|
enable(platform, bundleEntry) {
|
|
invariant(platform, 'Missing required parameter `platform`');
|
|
invariant(bundleEntry, 'Missing required paramenter `bundleEntry`');
|
|
|
|
// TODO(martinb) receive host and port as parameters
|
|
const host = 'localhost';
|
|
const port = '8081';
|
|
|
|
// need to require WebSocket inside of `enable` function because the
|
|
// this module is defined as a `polyfillGlobal`.
|
|
// See `InitializeJavascriptAppEngine.js`
|
|
const WebSocket = require('WebSocket');
|
|
|
|
const activeWS = new WebSocket(
|
|
`ws://${host}:${port}/hot?platform=${platform}&` +
|
|
`bundleEntry=${bundleEntry.replace('.bundle', '.js')}`
|
|
);
|
|
activeWS.onerror = (e) => {
|
|
throw new Error(
|
|
`Hot loading isn't working because it cannot connect to the development server.
|
|
|
|
Ensure the following:
|
|
- Node server is running and available on the same network
|
|
- run 'npm start' from react-native root
|
|
- Node server URL is correctly set in AppDelegate
|
|
|
|
URL: ${host}:${port}
|
|
|
|
Error: ${e.message}`
|
|
);
|
|
};
|
|
activeWS.onmessage = (m) => {
|
|
eval(m.data); // eslint-disable-line no-eval
|
|
};
|
|
},
|
|
};
|
|
|
|
module.exports = HMRClient;
|