React native hot reloading刷新但不更新更改

时间:2016-08-02 16:54:16

标签: android react-native genymotion react-native-android

我知道反应的基础知识,并且我的一些个人项目做了反应。现在我从react-native开始。

所以我创建了一个新项目并运行了run-android命令。它完成了所有必需的处理并启动了模拟器(我使用的是Genymotion android模拟器),

react-native init AwesomeProject
cd AwesomeProject
react-native run-android

之后在模拟器中我启用了热重新加载。打开项目并稍微更改了代码。然后进入模拟器,我按r(两次),它说fetching bundle。但我得到同样的东西。什么都没有改变。更新未更新。

所以,我关闭了终端并再次运行了同样的命令

react-native run-android

然后......它显示了变化。我不知道这里有什么问题。我看到this post并认为它可能有所帮助。但它没有。

我做错了什么?我使用的是react-native 0.30.0和Node v6.3.1。如果它对Windows 7有帮助,并运行nexus 6P作为Genymotion android模拟器。

2 个答案:

答案 0 :(得分:3)

回答我自己的问题。 This post帮助了我。

在此文件中\ node_modules \ react-native \ node_modules \ node-haste \ lib \ FileWatcher \ index.js

  1. 我不得不增加MAX_WAIT_TIME(我的是从120000变为360000)。
  2. 还得改变
  3. key: '_createWatcher',
        value: function _createWatcher(rootConfig) {
          var watcher = new WatcherClass(rootConfig.dir, {
            glob: rootConfig.globs,
            dot: false
          });
    
          return new Promise(function (resolve, reject) {
            var rejectTimeout = setTimeout(function () {
              return reject(new Error(timeoutMessage(WatcherClass)));
            }, MAX_WAIT_TIME);
    
            watcher.once('ready', function () {
              clearTimeout(rejectTimeout);
              resolve(watcher);
            });
          });
        }
    

    key: '_createWatcher',
        value: function _createWatcher(rootConfig) {
          var watcher = new WatcherClass(rootConfig.dir, {
            glob: rootConfig.globs,
            dot: false
          });
    
          return new Promise(function (resolve, reject) {
    
            const rejectTimeout = setTimeout(function() {
              reject(new Error([
                'Watcher took too long to load',
                'Try running `watchman version` from your terminal',
                'https://facebook.github.io/watchman/docs/troubleshooting.html',
              ].join('\n')));
            }, MAX_WAIT_TIME);
    
            watcher.once('ready', function () {
              clearTimeout(rejectTimeout);
              resolve(watcher);
            });
          });
        }
    

    现在这个更改后,我所做的任何代码更改,我甚至不必按两次R,它会自动更改。我希望这可能对像我这样的菜鸟有所帮助。谢谢。

答案 1 :(得分:0)

我做了两件事

1)将MAX_WAIT_TIME值更改为360000 2)在Android模拟器上执行Ctrl + M并选择"启用热重新加载"

现在,代码中的任何更改都会在模拟器中反映不到一秒钟。