我知道反应的基本原理,并且做了一些关于反应的个人项目。现在我从反应本土化开始。
因此,我创建了一个新项目并运行了run-android命令。它完成了所有所需的处理并启动了模拟器(我正在使用Genymotion模拟器),
react-native init AwesomeProject
cd AwesomeProject
react-native run-android之后,在模拟器中,我启用了热重加载。打开项目并稍微修改代码。然后进入模拟器,我按了r(两次),上面写着fetching bundle。但我得到的是同样的东西。什么都没有改变。未更新更改。
因此,我关闭了终端,并再次运行这个命令。
react-native run-android然后..。它显示了变化。我不知道这里出了什么问题。我看到了这个职位,认为这可能会有帮助。但事实并非如此。
我做错了什么?我使用的是react本机0.30.0和Node v6.3.1。如果它对我有帮助的话,我就在windows 7上运行一个连接6P作为Genymotion模拟器。
发布于 2016-08-02 18:10:50
回答我自己的问题。这个职位帮了我。
在此文件中,\node_modules\react-native\node_modules\node-haste\lib\FileWatcher\ index.js
MAX_WAIT_TIME (我的从120000增加到360000)。这
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两次,它会自动改变。我希望这能帮到像我这样的菜鸟。谢谢。
发布于 2016-09-22 16:49:04
我做了两件事
1)将MAX_WAIT_TIME值更改为360000 2)在Android模拟器上执行Ctrl+M并选择“启用热重加载”
现在,代码中的任何更改都会在模拟器中的不到一秒钟内反映出来。
https://stackoverflow.com/questions/38726377
复制相似问题