ReactNative環境構築時にハマったポイント

はじめに

React Nativeの環境構築だけで丸二日かかってしまいました。

その際様々なエラーに遭遇したのでエラーと対策をメモとして残しておきます。マカフィーは敵です🤳

sudo npm install -g react-native-cli

internal/modules/cjs/loader.js:582
    throw err;
    ^

Error: Cannot find module '../lib/utils/unsupported.js'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:580:15)
    at Function.Module._load (internal/modules/cjs/loader.js:506:25)
    at Module.require (internal/modules/cjs/loader.js:636:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at /usr/local/lib/node_modules/npm/bin/npm-cli.js:19:21
    at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:152:3)
    at Module._compile (internal/modules/cjs/loader.js:688:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)

色々試していたら以下の様なエラーが出力される様になりました。アンインストールなどを試していたと思います。

bash: node: command not found

パスを際設定してあげることでnpmのコマンドが使える様になりました。

export PATH="$HOME/.nodebrew/current/bin:$PATH"

xcodebuildのエラー

error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by opening NativeTest.xcworkspace. Run CLI with --verbose flag for more details.

react-native run-ios –port 8090でポート番号を変更してビルド。1回でうまくいかない時はシミュレータとターミナル再起動で試すと成功する。

react-native run-ios –port 8090

react-native run-ios --port 8090

    
    error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by opening NativeTest.xcworkspace. Run CLI with --verbose flag for more details.
User defaults from command line:
    IDEDerivedDataPathOverride = /Users/harumi_sagawa/Desktop/NativeTest/ios/build/NativeTest

Build Preparation
Build task concurrency set to 4 via user default IDEBuildOperationMaxNumberOfConcurrentCompileTasks

note: Using new build system
note: Planning build
note: Using build description from disk
PhaseScriptExecution Start\ Packager /Users/harumi_sagawa/Desktop/NativeTest/ios/build/NativeTest/Build/Intermediates.noindex/NativeTest.build/Debug-iphonesimulator/NativeTest.build/Script-FD10A7F022414F080027D42C.sh (in target: NativeTest)
    cd /Users/harumi_sagawa/Desktop/NativeTest/ios
    /bin/sh -c /Users/harumi_sagawa/Desktop/NativeTest/ios/build/NativeTest/Build/Intermediates.noindex/NativeTest.build/Debug-iphonesimulator/NativeTest.build/Script-FD10A7F022414F080027D42C.sh
Connection to localhost port 8081 [tcp/sunproxyadmin] succeeded!
Port 8081 already in use, packager is either not running or not running correctly
Command PhaseScriptExecution failed with a nonzero exit code


** BUILD FAILED **


The following build commands failed:
	PhaseScriptExecution Start\ Packager /Users/harumi_sagawa/Desktop/NativeTest/ios/build/NativeTest/Build/Intermediates.noindex/NativeTest.build/Debug-iphonesimulator/NativeTest.build/Script-FD10A7F022414F080027D42C.sh
(1 failure)

portを指定しない場合8081が選ばれる様だがこれが何かに使われている?のが問題らしい。8081のportをkillしてみたが変化なかった。

コマンドをreact-native run-ios –port 8090に変更してビルドを行うことで解決する。

No bundle URL present.のエラー

No bundle URL present.

Make sure you're running a packager server or have included a .jsbundle file in your application bundle.

RCTFatal
__28-[RCTCxxBridge handleError:]_block_invoke
_dispatch_call_block_and_release
_dispatch_client_callout
_dispatch_main_queue_callback_4CF
__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
__CFRunLoopRun
CFRunLoopRunSpecific
GSEventRunModal
UIApplicationMain
main
start
0x0

StackOverflowなどに解決策が色々書いてあるのですが全部ダメでした。

マカフィーが悪さをしているのが問題の様でした。そもそも8081のポートはマカフィーが使っていた様です。portをkillするとMetro Bundlerが動かなくなってしまうのでマカフィーを殺さずに解決する必要があります。

解決策はXcodeでプロジェクトを開きプロジェクト内全検索で8081になっている部分を全て8080に修正したら動く様になりました。

run-iosでエラーが出た時

Command `run-ios` unrecognized. Make sure that you have run `npm install` and that you are inside a react-native project.

素直にnpm installを実行すればエラーは解消する。

error: PCH was compiled with module cache path


❌  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:16:10: could not build module 'Darwin'

#include <sys/types.h>
 ~~~~~~~~^



❌  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk/usr/include/dispatch/dispatch.h:25:10: could not build module 'Darwin'

#include <Availability.h>
 ~~~~~~~~^



❌  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk/usr/include/os/object.h:25:10: could not build module 'Darwin'

#include <Availability.h>
 ~~~~~~~~^



❌  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:6:10: could not build module 'CoreFoundation'

#include <CoreFoundation/CoreFoundation.h>
 ~~~~~~~~^



❌  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk/usr/include/objc/objc.h:31:10: could not build module 'Darwin'

#include <sys/types.h>      // for __DARWIN_NULL
 ~~~~~~~~^



❌  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk/System/Library/Frameworks/Security.framework/Headers/SecBase.h:27:10: could not build module 'Darwin'

#include <TargetConditionals.h>
 ~~~~~~~~^



❌  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk/System/Library/Frameworks/CoreServices.framework/Headers/UTCoreTypes.h:19:10: could not build module 'CoreFoundation'

#include <CoreFoundation/CoreFoundation.h>
 ~~~~~~~~^



❌  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.h:8:9: could not build module 'Foundation'

#import <Foundation/Foundation.h>
 ~~~~~~~^



❌  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/CABase.h:11:10: could not build module 'Darwin'


 ~~~~~~~~^



❌  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk/System/Library/Frameworks/CoreImage.framework/Headers/CoreImageDefines.h:10:10: could not build module 'Darwin'

#include <TargetConditionals.h>
 ~~~~~~~~^



❌  fatal error: could not build module 'Darwin'



❌  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk/System/Library/Frameworks/CoreText.framework/Headers/CTDefines.h:12:10: could not build module 'Darwin'

#include <Availability.h>
 ~~~~~~~^



❌  /Users/harumi_sagawa/Desktop/testProject2/ios/Pods/Target Support Files/DoubleConversion/DoubleConversion-prefix.pch:2:9: could not build module 'UIKit'

#import <UIKit/UIKit.h>

権限の問題なので、システム環境設定 > セキュリティーとプライバシーで許可をすれば解決する

実機でのビルド

コマンドラインからはios実機でのビルドはできません。(たぶん

その為Xcodeから実行する必要がありますが、以下の画像の様なエラーが出てしまいました。

Xcodeで記述されているport8081の指定は全て修正したと思っていたのですがRunScript内の記述でportを8081で起動するという内容が書いてありました。

その部分を8080に修正したところエラーが解消しました。

_RCTSetLogFunctionのエラー

以下のようなエラーが出た時。SchemeがReleaseになっていると出るみたいです。


Showing Recent Errors Only
:-1: Undefined symbol: _RCTSetLogFunction

TestのTargetでBuild Setting > Linking > Dead Code StrippingをNoに変えることでビルドするようになります

参考文献

入れたはずのnode.js や npmが見つからないとき

npm よく使うコマンドまとめ

error Failed to build iOS project. We ran “xcodebuild” command but it exited with error code 65

McAfeeのせいで react nativeがbuild出来ない 解決メモ

[iOS] Build Fails when Scheme is set to Release