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
后面的父类有问题。至于原因,则可能是:
-
import
与 module 中的类型不相符。这是import
和module.exports
如何正确使用的问题。 - module 文件不是 es6 语法,而
import
只支持 es6 格式的文件。module 文件开头要有'use strict';
声明。
【结论】
- 基础知识,初学者多学多练才是王道。
- 对于长时间没有更新的开源项目,慎重选择。
- 经验是日积月累下来的,不太可能一蹴而就。
4. export 和 import 的关系
import
和export
的对应关系捋不清。
【结论】
借用 stackoverflow 上面的一个高分回答来解释。一共就两种类型,name export
和 default 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')
网友评论