React-Native 刚入门就放弃

2017-09-08  本文已影响428人  simonkuang

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

【结论】


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')

上一篇下一篇

猜你喜欢

热点阅读