ReactNative开发之我遇到的那些坑(持续更新) - Go语言中文社区

ReactNative开发之我遇到的那些坑(持续更新)


上篇文章里介绍了ReactNative环境的搭建,然后你以为就可以开开心心的进行开发了?too young!
最让人抓狂的部分才刚刚到来。。

Q1、在启动js server的时候 react-native start ,老是报错 “operation not permitted, 1stat ‘’
这里写图片描述
老实说,这个问题一直没有找到很好的解决办法,因为每次提示的文件都不是同一个。目前我采取的就是

提示哪个文件就把哪个文件删除

1)最开始提示 是assets文件夹,删也删不掉;最后解决办法,把项目里的assets删除;
2)后来提示.idea/libraries文件夹,把里面的xml文件全部删除;
总之就是删除对应文件。

Q2、修改js文件,reload之后没效果:
要解决办法,修改MAX WAIT_TIME变量,项目路径/node_modules/react-native/packager/react-packager/src/node-haste/FileWatcher/index.js中的MAX WAIT_TIME值改得更大一些;
const MAX_WAIT_TIME = 120000;
const MAX_WAIT_TIME = 360000; //改大一些以便node服务可以将js的修改打包到bundle文件中。

//找到如下代码
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);
        });
      });
    }

修改和之后要重启React Packager。
最新的RN已经没有这个这个问题了,只要你启动hot loading,修改js后就会自动加载。

Q3、启动js server后,访问项目报错:
这里写图片描述
在stackoverflow上该问题问的很少,对应的答案就更少了,可能出现的几率不大且出现的原因各异,我这里的原因是npm加载库的时候出错导致库未加载全。重新正确的进行cnpm install即可。

Q4、引入第三方库的时候编译报错Error:Configuration with name 'default' not found.
引起这个问题的原因好多,目前总结两点解决办法:
1、在你的Android项目中的setting.gradle文件里多次使用了 include ‘:app’,删除多余的只留一个就好;
2、你引用项目的路径错了,修改正确即可。(这个可不好找哦,需要你仔细检查)

Q5、Unsupported major.minor version 52.0。编译android项目的时候报这个错误,解决办法是使用Java8.

Q6、每次启动js server都非常慢。
ReactNative更新到最新版本即可。
每次启动的时候都要做一些重复的工作,比如切换到项目根目录,执行react-native start命令等,可以自己写一个bat脚本,直接运行即可。附上脚本如下,我的项目目录是在e:studiospaceReactNativemobile_console这个目录下

@echo off
cd
e:
cd studiospaceReactNativemobile_console
react-native start
cmd
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/fly_yuge/article/details/53763205
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-04-18 22:47:52
  • 阅读 ( 1451 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢