美文网首页
React-Native 刚入门就放弃

React-Native 刚入门就放弃

作者: simonkuang | 来源:发表于2017-09-08 12:52 被阅读428次

    1. 编译阶段出错,修改代码错误信息不变

    2017.08.02 01:18,不能编译 ios

    每次 run react-native run-ios 的时候就会出现如下错误(请留意最后一段)。

    # ... 省略之前若干成功的日志
    
    CompileC /Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/Objects-normal/x86_64/Bits.o /Users/simonkuang/workspace/rndemo/node_modules/react-native/third-party/folly-2016.09.26.00/folly/Bits.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
        cd /Users/simonkuang/workspace/rndemo/node_modules/react-native/React
        export LANG=en_US.US-ASCII
        export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/Cellar/ant/1.10.1/bin:/Users/simonkuang/Library/Android/sdk/tools:/Users/simonkuang/Library/Android/sdk/platform-tools:/Users/simonkuang/Library/Android/sdk:/Users/simonkuang/Library/Android/sdk/ndk-bundle/build:/Users/simonkuang/Downloads/cocos2d-x-3.15.1/templates:/Users/simonkuang/Downloads:/Users/simonkuang/Downloads/cocos2d-x-3.15.1/tools/cocos2d-console/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Applications/Wireshark.app/Contents/MacOS:/Users/simonkuang/bin:/Users/simonkuang/.yarn/bin:/Users/simonkuang/.composer/vendor/bin:/Users/simonkuang/Library/Android/sdk/tools:/Users/simonkuang/Library/Android/sdk/platform-tools:/Users/simonkuang/Library/Android/sdk/ndk-bundle/build:/Users/simonkuang/workspace/depot_tools"
        /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c++ -arch x86_64 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu++11 -stdlib=libc++ -fmodules -fmodules-cache-path=/Users/simonkuang/workspace/rndemo/ios/build/ModuleCache -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fbuild-session-file=/Users/simonkuang/workspace/rndemo/ios/build/ModuleCache/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -Wno-trigraphs -fpascal-strings -O0 -fno-common -Wno-missing-field-initializers -Wmissing-prototypes -Werror=return-type -Wdocumentation -Wunreachable-code -Werror=deprecated-objc-isa-usage -Werror=objc-root-class -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wmissing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wshadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -DDEBUG=1 -DRCT_DEBUG=1 -DRCT_DEV=1 -DRCT_NSASSERT=1 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10.3.sdk -fasm-blocks -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -mios-simulator-version-min=8.0 -g -Wno-sign-conversion -Winfinite-recursion -Wmove -iquote /Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/third-party-generated-files.hmap -I/Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/third-party-own-target-headers.hmap -I/Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/third-party-all-target-headers.hmap -iquote /Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/third-party-project-headers.hmap -I/Users/simonkuang/workspace/rndemo/ios/build/Build/Products/Debug-iphonesimulator/include -I/Users/simonkuang/workspace/rndemo/node_modules/react-native/React/../third-party/boost_1_63_0 -I/Users/simonkuang/workspace/rndemo/node_modules/react-native/React/../third-party/folly-2016.09.26.00 -I/Users/simonkuang/workspace/rndemo/node_modules/react-native/React/../third-party/glog-0.3.4/src -I/Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/DerivedSources/x86_64 -I/Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/DerivedSources -Wextra -Wall -Wno-semicolon-before-method-body -F/Users/simonkuang/workspace/rndemo/ios/build/Build/Products/Debug-iphonesimulator -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -MMD -MT dependencies -MF /Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/Objects-normal/x86_64/Bits.d --serialize-diagnostics /Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/Objects-normal/x86_64/Bits.dia -c /Users/simonkuang/workspace/rndemo/node_modules/react-native/third-party/folly-2016.09.26.00/folly/Bits.cpp -o /Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/Objects-normal/x86_64/Bits.o
    In file included from /Users/simonkuang/workspace/rndemo/node_modules/react-native/third-party/folly-2016.09.26.00/folly/Bits.cpp:17:
    In file included from /Users/simonkuang/workspace/rndemo/node_modules/react-native/React/../third-party/folly-2016.09.26.00/folly/Bits.h:70:
    /Users/simonkuang/workspace/rndemo/node_modules/react-native/React/../third-party/folly-2016.09.26.00/folly/detail/BitIteratorDetail.h:21:10: fatal error: 'boost/iterator/iterator_adaptor.hpp' file not found
    #include <boost/iterator/iterator_adaptor.hpp>
             ^
    1 error generated.
    
    CompileC /Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/Objects-normal/x86_64/symbolize.o /Users/simonkuang/workspace/rndemo/node_modules/react-native/third-party/glog-0.3.4/src/symbolize.cc normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
        cd /Users/simonkuang/workspace/rndemo/node_modules/react-native/React
        export LANG=en_US.US-ASCII
        export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/Cellar/ant/1.10.1/bin:/Users/simonkuang/Library/Android/sdk/tools:/Users/simonkuang/Library/Android/sdk/platform-tools:/Users/simonkuang/Library/Android/sdk:/Users/simonkuang/Library/Android/sdk/ndk-bundle/build:/Users/simonkuang/Downloads/cocos2d-x-3.15.1/templates:/Users/simonkuang/Downloads:/Users/simonkuang/Downloads/cocos2d-x-3.15.1/tools/cocos2d-console/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Applications/Wireshark.app/Contents/MacOS:/Users/simonkuang/bin:/Users/simonkuang/.yarn/bin:/Users/simonkuang/.composer/vendor/bin:/Users/simonkuang/Library/Android/sdk/tools:/Users/simonkuang/Library/Android/sdk/platform-tools:/Users/simonkuang/Library/Android/sdk/ndk-bundle/build:/Users/simonkuang/workspace/depot_tools"
        /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c++ -arch x86_64 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu++11 -stdlib=libc++ -fmodules -fmodules-cache-path=/Users/simonkuang/workspace/rndemo/ios/build/ModuleCache -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fbuild-session-file=/Users/simonkuang/workspace/rndemo/ios/build/ModuleCache/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -Wno-trigraphs -fpascal-strings -O0 -fno-common -Wno-missing-field-initializers -Wmissing-prototypes -Werror=return-type -Wdocumentation -Wunreachable-code -Werror=deprecated-objc-isa-usage -Werror=objc-root-class -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wmissing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wshadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion
     -Wint-conversion -Wbool-conversion -Wenum-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -DDEBUG=1 -DRCT_DEBUG=1 -DRCT_DEV=1 -DRCT_NSASSERT=1 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10.3.sdk -fasm-blocks -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -mios-simulator-version-min=8.0 -g -Wno-sign-conversion -Winfinite-recursion -Wmove -iquote /Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/third-party-generated-files.hmap -I/Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/third-party-own-target-headers.hmap -I/Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/third-party-all-target-headers.hmap -iquote /Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/third-party-project-headers.hmap -I/Users/simonkuang/workspace/rndemo/ios/build/Build/Products/Debug-iphonesimulator/include -I/Users/simonkuang/workspace/rndemo/node_modules/react-native/React/../third-party/boost_1_63_0 -I/Users/simonkuang/workspace/rndemo/node_modules/react-native/React/../third-party/folly-2016.09.26.00 -I/Users/simonkuang/workspace/rndemo/node_modules/react-native/React/../third-party/glog-0.3.4/src -I/Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/DerivedSources/x86_64 -I/Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/DerivedSources -Wextra -Wall -Wno-semicolon-before-method-body -F/Users/simonkuang/workspace/rndemo/ios/build/Build/Products/Debug-iphonesimulator -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -MMD -MT dependencies -MF /Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/Objects-normal/x86_64/symbolize.d --serialize-diagnostics /Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/Objects-normal/x86_64/symbolize.dia -c /Users/simonkuang/workspace/rndemo/node_modules/react-native/third-party/glog-0.3.4/src/symbolize.cc -o /Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/Objects-normal/x86_64/symbolize.o
    
    
    ** BUILD FAILED **
    
    
    The following build commands failed:
        CompileC /Users/simonkuang/workspace/rndemo/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/third-party.build/Objects-normal/x86_64/Bits.o /Users/simonkuang/workspace/rndemo/node_modules/react-native/third-party/folly-2016.09.26.00/folly/Bits.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
    
    (1 failure)
    
    Installing build/Build/Products/Debug-iphonesimulator/rndemo.app
    An error was encountered processing the command (domain=NSPOSIXErrorDomain, code=2):
    Failed to install the requested application
    An application bundle was not found at the provided path.
    Provide a valid path to the desired application bundle.
    Print: Entry, ":CFBundleIdentifier", Does Not Exist
    
    Command failed: /usr/libexec/PlistBuddy -c Print:CFBundleIdentifier build/Build/Products/Debug-iphonesimulator/rndemo.app/Info.plist
    Print: Entry, ":CFBundleIdentifier", Does Not Exist
    
    

    最初搜索关键词 :CFBundleIdentifier 不得法。

    用了笨办法,删除 demo,重建,看全量日志,发现一个提示,提到 boost_1_63_0.tar.gz 解压不成功。

    这下全明白了。

    我大局域网内下载 boost 历来有不通畅的情况。通过梯子手动下载一个 OK 的版本,放在缓存目录,即可。

    # 假设通过梯子下载了 boost 1.63.0 的压缩包到 /tmp 目录下。
    
    mv -f /tmp/boost_1_63_0.tar.gz ~/.rncache/
    
    # clean all cache, and restart watchman through yarn
    watchman watch-del-all && rm -rf node_modules/ && yarn cache clean && yarn install && yarn start -- --reset-cache
    
    # retry
    react-native run-ios
    

    【结论】

    • 我兲朝墙高,下载类似 boost、jdk 等资源时历来失败多于成功,容易重现;
    • 由于 rn 自带缓存机制,在重试的时候,错误日志与问题本源不相关;
    • 还是 rn 缓存的关系,手动下载存放 boost 压缩包之后,要清除 rn cache 才行;

    2. 新建好的 ReactNative 项目就 run 不动

    2017-09-01,运行一个全新的 ReactNative 全新的项目失败

    【结论】

    阵发性的错误,ReactNative@0.48.0 版本中存在的一个 bug,截至 09.08,到 ReactNative@0.48.2 已经修复。

    临时解决办法是,初始化项目时,使用 OK 的老版本,而非最新版本。

    react-native init --version=0.47.2 myproject  // ReactNative@0.47.2 is ok
    

    3. 父类只能是 null 或者函数

    2017-09-06,网上一段简单的 demo,报 Super expression must be either be null or a function, not undefined 错误。

    stackoverflow 上面高分答案已经说清楚了,就是 extends 后面的父类有问题。至于原因,则可能是:

    【结论】

    • 基础知识,初学者多学多练才是王道。
    • 对于长时间没有更新的开源项目,慎重选择。
    • 经验是日积月累下来的,不太可能一蹴而就。

    4. export 和 import 的关系

    importexport 的对应关系捋不清。

    【结论】

    借用 stackoverflow 上面的一个高分回答来解释。一共就两种类型,name exportdefault export,记住、用熟就好。

    /**
     * This is how you import stuff.  In this case you're actually 
     * importing two things:  React itself and just the "Component" 
     * part from React.  Importing the "Component" part by itself makes it
     * so that you can do something like:
     *
     * class MyComponent extends Component ...
     * 
     * instead of...
     * 
     * class MyComponent extends React.Component
     * 
     * Also note the comma below
     */
    import React, {Component} from 'react';
    
    
    /**
     * This is a "default" export.  That means when you import 
     * this module you can do so without needing a specific module
     * name or brackets, e.g.
     * 
     * import Header from './header';
     *
     * instead of...
     *
     * import { Header } from './header';
     */
    export default class Header extends Component {
    
    }
    
    /**
     * This is a named export.  That means you must explicitly
     * import "Header" when importing this module, e.g.
     *
     * import { Header } from './header';
     *
     * instead of...
     * 
     * import Header from './header';
     */
    export const Header = React.createClass({
    
    })
    
    /**
     * This is another "default" export, only just with a 
     * little more shorthand syntax.  It'd be functionally 
     * equivalent to doing:
     *
     * const MyClass = React.createClass({ ... });
     * export default MyClass;
     */
    export default React.createClass({
    
    })
    

    5. yarn start 的时候报错 error: no devices/emulators found

    yarn start 的时候报错:error: no devices/emulators found

    yarn start 的时候并不需要用到模拟器,为什么呢?

    【结论】

    下载了别人的项目下来,之后忘了运行 yarn install 安装依赖模块。

    yarn install 安装依赖模块,再 yarn start 启动守护进程,就好了。


    6. undefined is not an object (evaluating 'RCCManager.setRootController')

    undefined is not an object (evaluating 'RCCManager.setRootController')

    相关文章

      网友评论

          本文标题:React-Native 刚入门就放弃

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