美文网首页Hybrid开发
React Native--常见问题汇总

React Native--常见问题汇总

作者: 青苹果园 | 来源:发表于2018-05-29 13:57 被阅读606次
    React Navite

    问题汇总:

    1. /Users/xxx/Desktop/Finance/xxxx/ios/bundle/main.jsbundle: No such file or directory
    1. import <fishhook/fishhook.h> file not found
    1. import <RCTAnimation/RCTValueAnimatedNode.h> file not found
    1. 'config.h' file not found

    2. 'error:/Users/......./SupportFiles/main.jsbundle: No such file or directory'

    3. 'React/RCTBridgeModule.h' file not found

    4. Could not build Objective-C module 'React'

    1. main.jsbundle: No such file or directory

     /Users/xxx/Desktop/Finance/PaishengFinance/ios/bundle/main.jsbundle: No such file or directory
    

    解决方案:

    方案一:使用如下命令生成 main.jsbundle,然后拖到项目中的bundle目录下

    react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ./ios/bundle/main.jsbundle --assets-dest ./ios/bundle
    

    其中我们常使用的一线命令选项:

    • --entry-file ,ios或者android入口的js名称,比如index.js
    • --platform ,平台名称(ios或者android)
    • --dev ,设置为false的时候将会对JavaScript代码进行优化处理。
    • --bundle-output, 生成的jsbundle文件的名称,比如./ios/bundle/main.jsbundle
    • --assets-dest 图片以及其他资源存放的目录,比如./ios/bundle

    解决方案二:把命令直接写入npm script(package.json中)脚本中

    "scripts": {
        "start": "node node_modules/react-native/local-cli/cli.js start",
        "bundle-ios":"react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ./ios/bundle/main.jsbundle --assets-dest ./ios/bundle"
      },
    

    然后在终端执行npm run bundle-ios命令即可

    修改RN入口代码

    • Debug Server上的设置
    let jsCodeLocation = URL(string: "http://localhost:8081/index.bundle?platform=ios")
    
    • 设置离线的jsCodeLocation
    let jsCodeLocation = Bundle.main.url(forResource: "bundle/main", withExtension: "jsbundle")
    
    • 如果在项目中使用了CodePush热更新
    let jsCodeLocation = CodePush.bundleURL()
    

    温馨提示:上传代码的时候,如果.gitignore文件中有忽略*.jsbundle后缀的,先把它注释掉再上传

    2. #import <fishhook/fishhook.h> file not found

    解决方案:在package.json文件脚本scripts中添加如下代码

    "fishhookinstall": "sed -I '' 's#<fishhook/fishhook.h>#\"fishhook.h\"#g' ./node_modules/react-native/Libraries/WebSocket/RCTReconnectingWebSocket.m",
    

    然后终端执行:npm run fishhookinstallnpm run bundle-ios

    3. #import <RCTAnimation/RCTValueAnimatedNode.h> file not found

    解决方案:在package.json文件脚本scripts中添加如下代码

    "nodeinstall": "sed -I '' 's\/#import <RCTAnimation\\/RCTValueAnimatedNode.h>\/#import \"RCTValueAnimatedNode.h\"\/' ./node_modules/react-native/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.h",
    

    然后终端执行:npm run nodeinstallnpm run bundle-ios

    4. 'config.h' file not found

    解决方案:

    // 1. 进入脚本目录,并运行脚本
    cd node_modules/react-native/third-party/glog-0.3.4
    ../../scripts/ios-configure-glog.sh
    
    // 2. 重新编辑运行即可
    

    5. 'error:/Users/......./SupportFiles/main.jsbundle: No such file or directory'

    // 1.项目根目录下执行
    npm run build-ios
    
    // 2.把项目中旧的main.jsbundle和assets删除,从bundle文件中重新拖进来,选项如下:
    

    6. 'React/RCTBridgeModule.h' file not found

    • (1). 进入scheme管理界面:Product -> Scheme -> Manage Scheme -> 双击你的项目;
    • (2). 点击‘ build’;
    • (3). 取消'Parallelize Build'勾选;
    • (4). 点击“+”号,添加“React”库;
    • (5). 把添加的“React”库,拖到最上面,再次运行即可;

    7. Could not build Objective-C module 'React'

    由于RN项目用pod引入了React相关的库,运行的时候报Could not build Objective-C module 'React'错误。

    解决方案:

    进入如下(个人/资源库/Developer/Xcode/DerivedData/)目录,清空DerivedData目录下的所以缓存文件,重新运行项目即可。

    持续更新中……

    相关文章

      网友评论

        本文标题:React Native--常见问题汇总

        本文链接:https://www.haomeiwen.com/subject/bbtajftx.html