web-dev-qa-db-ja.com

main.jsbundleは存在しません。これは+ echo 'react nativeのバグでなければなりません

XCode9.2でProduct> Archiveを使用して、React Nativeプロジェクトをアーカイブしようとしました。しかし、Xcodeはこのエラーを生成します。

File /Users/louis/Library/Developer/Xcode/DerivedData/Scavenger-evyvzocndqoghkclcbwewolywniz/Build/Products/Release-iphoneos/Scavenger.app/main.jsbundle does not exist. This must be a bug with


My Environment:
  OS: macOS Sierra 10.12.6
  Node: 9.3.0
  npm: 5.5.1
  Watchman: 4.7.0
  Xcode: Xcode 9.2 Build version 9C40b
  Android Studio: 3.0 AI-171.4443003

Packages: (wanted => installed)
  react: ^16.0.0 => 16.2.0
  react-native: ^0.50.3 => 0.50.4

また、ターミナルで実行しようとしました
react-native bundle --entry-file='index.ios.js' --bundle-output='./ios/Scavenger/main.jsbundle' --dev=false --platform='ios' --assets-dest='./ios'しかし、依存関係グラフの読み込み中にエラーが発生しました... JSON入力の予期しない終了

XCodeエラー。

Click here to see XCode error

11
Louis Kurniawan

この問題の修正には数日かかります。 travis-ciでビルドを実行すると、この問題が発生しました。ここに私の修正があります:

Package.jsonファイルのscriptsにこの行を追加します。

"build:ios": "react-native bundle --entry-file='index.js' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios'"

これで、main.jsbundleを生成するコマンドを実行できます。 yarn build:iosまたはnpm run build:ios

Xcodeを開きます->プロジェクトターゲットを選択->ビルドフェーズでmain.jsbundleCopy Bundle Resourceに追加します。 (下の画像)。

Xcode fix

26
Cuong Lam

AppDelegate.mでこの行をコメントします

 jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; 

この行を使用してください:-

jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 

その後、これを実行してjsbundleを作成します:

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

Xcodeでこのコマンドの後に実行します。それがバンドルを作成し、その後そのようなエラーがないことを願っています...ありがとう

18
Kartik Shah

これは、プロジェクトにオフラインバンドルファイルが存在しない場合に発生します。同じ問題が発生し、これでうまくいきました。

Package.jsonファイルのscriptsセクションの下に次の行を追加したので、オフラインバンドルを生成するたびに入力する必要がありません。

"build:ios": "react-native bundle --entry-file='index.ios.js' --bundle-output='./ios/YourAppName/main.jsbundle' --dev=false --platform='ios' --assets-dest='./ios'"

そして、アプリケーションプロジェクトフォルダーで次のコマンドを実行します。

npm run build:iosを実行します

上記のコマンドを実行した後、新しいmain.jsbundleios/YourAppNameディレクトリ。

次に、XCodeを使用してプロジェクトを開き、プロジェクト名を右クリックして、「YourProjectName」にファイルを追加をクリックし、main.jsbundleファイルを生成し、再度ビルドします。

今ではうまく機能しているかもしれません。

私は使っている:

 "react": "16.0.0-alpha.12",
 "react-native": "^0.48.3",
7
Nidhi Shah

このコマンドは私のために機能します。

react-native bundle --entry-file ./index.ios.js --platform ios --bundle-output ios/main.jsbundle
2
Jaydeep Patel

シェルスクリプトを書き直して問題を解決しました。 プロジェクト> ビルドフェーズ> バンドルReactネイティブコードとイメージ。スクリプトに空白文字がありました。

2
Louis Kurniawan

最新のXcodeおよびReact Nativeバージョン。 My React Native Version:0.56 and Xcode 10を使用することをお勧めします。

ステップ1:AppDelegate.mを変更 file

    //  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#ifdef DEBUG
  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
  jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif

ステップ2:Xcodeビルド構成を「リリース」に変更

製品に移動>スキーム>スキームの編集>デバッグをリリースに変更

xcode 10以降を使用している場合は、[ファイル]> [ProjectWorkSpace設定]> [ビルドシステム]で[ビルドシステム]を[レガシービルドシステム]に変更してください。

ステップ3:「babel-preset-react-native」が5.0.1に存在しない場合はアップグレードしますpackage.jsonファイルを追加してください。

NodeModulesおよびpackage.lockファイルを削除して追加します(npm installまたはyarn install)。

ステップ4:「。babelrc.js」ファイルを変更

追加 " presets: ["module:metro-react-native-babel-preset"]

ステップ5:ターミナルを開く

ターミナルを開き、プロジェクトディレクトリに移動してこのコマンドを実行します

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

これにより、iOSフォルダーに「main.jsbundle」ファイルが生成されます

ステップ6:「main.jsbundle」ファイルをXcodeに追加します。

Xcodeを開き、「バンドルリソースのコピー」の下の「ビルドフェーズ」に移動し、「main.jsbundle」ファイルを追加します。

プロジェクトをクリーンアップすると、Xcodeの派生データもクリアされます。これにより、リリースモードでプロジェクトがビルドされます。

「アーカイブ」エラーの場合

この依存関係を「podファイル」に追加します

pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'CxxBridge'
  ]
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

Podとpod.lockを削除して、再度追加します。 (ポッドインストール)

Happy Coding:)

1

私の場合、RN 0.53.3から0.55.4に更新した後、アーカイブでこのエラーが発生しました

/Users/<myuser>/Desktop/projects/<myProjectName>mobileapp/index.ios.js: Plugin 0 specified in "/Users/<myUserName>/Desktop/projects/<myProjectName>mobileapp/node_modules/babel-preset-react-native/index.js" provided an invalid property of "default" (While processing preset: "/Users/<myUserName>/Desktop/projects/<myProjectName>mobileapp/node_modules/babel-preset-react-native/index.js")

+ [[ false != true ]]
+ [[ ! -f /Users/<myUserName>/Library/Developer/Xcode/DerivedData/<myProjectName>Mobile-ghzbbftkebcwlvayfocqahvzifbe/Build/Intermediates.noindex/ArchiveIntermediates/<myProjectName>Mobile/BuildProductsPath/Release-iphoneos/<myProjectName>Mobile.app/main.jsbundle ]]
+ echo 'error: File /Users/<myUserName>/Library/Developer/Xcode/DerivedData/<myProjectName>Mobile-ghzbbftkebcwlvayfocqahvzifbe/Build/Intermediates.noindex/ArchiveIntermediates/<myProjectName>Mobile/BuildProductsPath/Release-iphoneos/<myProjectName>Mobile.app/main.jsbundle does not exist. This must be a bug with'
error: File /Users/<myUserName>/Library/Developer/Xcode/DerivedData/<myProjectName>Mobile-ghzbbftkebcwlvayfocqahvzifbe/Build/Intermediates.noindex/ArchiveIntermediates/<myProjectName>Mobile/BuildProductsPath/Release-iphoneos/<myProjectName>Mobile.app/main.jsbundle does not exist. This must be a bug with
+ echo 'React Native, please report it here: https://github.com/facebook/react-native/issues'
React Native, please report it here: https://github.com/facebook/react-native/issues
+ exit 2

これを修正する重要性は、babel-preset-react-nativeに関連するエラーの上の行にありました

いくつかの回避策を何時間も試した後、ダウングレードして解決策を見つけましたbabel-preset-react-native from ^5.0.2から^4.0.0アーカイブプロセスを機能させる。

1
Florin Dobre

私の場合、これはプロジェクトパスのスペース文字/users/USER/Projects/Project HousePlants/が原因でした。

Project Houseplantsのスペースは、バンドルが処理できないため、main.jsbundleを見つけることができません

パスに空白文字がないことを確認して、再試行してください。

この回答を参照

0
Attaque

私の場合、javascriptコードが原因でした。 Metro Bundler(コマンドライン)で表示されたエラー。 Metro Bundlerを確認し、エラーがあるかどうかを確認します。

0
user8637708