web-dev-qa-db-fra.com

main.jsbundle n'existe pas. cela doit être un bug avec + echo 'réagir natif

J'ai essayé d'archiver mon projet natif de réaction en utilisant Product > Archive sur XCode9.2. Mais Xcode produit cette erreur: 

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

J'ai aussi essayé de courir sur le terminal
react-native bundle --entry-file='index.ios.js' --bundle-output='./ios/Scavenger/main.jsbundle' --dev=false --platform='ios' --assets-dest='./ios' mais s'est retrouvé avec une erreur de chargement du graphe de dépendance ... Fin inattendue de l'entrée JSON

Erreur Xcode.

Click here to see XCode error

8
Louis Kurniawan

Commentez cette ligne dans AppDelegate.m

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

Utilisez cette ligne: -

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

Après cela, lancez ceci pour faire jsbundle: -

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

Exécuter après cette commande dans xcode . J'espère que cela fera un paquet et qu'il n'y aura plus d'erreur après cela ....

15
Kartik Shah

Ce problème me prend quelques jours à résoudre. J'ai eu ce problème lors de l'exécution de la compilation sur travis-ci. Voici ma solution: 

Ajoutez cette ligne à scripts dans votre fichier package.json. 

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

Maintenant, vous pouvez exécuter la commande pour générer main.jsbundle. yarn build:ios ou npm run build:ios

Ouvrez le Xcode -> Sélectionnez la cible du projet -> Ajoutez main.jsbundle à Copy Bundle Resource dans Build Phases. (image ci-dessous).

 Xcode fix

12
Cuong Lam

Cela se produit lorsqu'il n'y a pas de fichier de bundle hors connexion dans votre projet, j'ai eu le même problème et cela a fonctionné pour moi.

J'ai ajouté la ligne ci-dessous à mon fichier package.json, dans la section scripts, de sorte que je n'ai pas à la saisir à chaque fois que je veux générer un bundle hors connexion.

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

Et puis exécutez cette commande dans votre dossier de projets d'application:

npm run build: ios

Après avoir exécuté la commande ci-dessus, un nouveau main.jsbundle sera généré dans votre répertoire ios/YourAppName.

Ensuite, ouvrez votre projet en utilisant XCode, faites un clic droit sur le nom de votre projet, puis cliquez sur Ajouter des fichiers à "YourProjectName", choisissez le fichier main.jsbundle qui a été généré, puis compilez à nouveau.

Maintenant, cela pourrait bien fonctionner.

J'utilise:

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

Il est recommandé d'utiliser les dernières versions de Xcode et de React Native. Ma version React Native: 0.56 et Xcode 10

Étape 1: _ {Modifier AppDelegate.m fichier

    //  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

Étape 2:Modifiez la configuration de construction de Xcode en "Libération"

Goto Products> Scheme> Edit Scheme> changez le débogage en version

si vous utilisez Xcode 10+, modifiez Build System en Legacy Build System sous Fichier> Paramètres de ProjectWorkSpace> Build System. 

Step 3: Mettez à niveau votre "babel-preset-react-native" vers la version 5.0.1. S'il n'existe pas dans votre fichier package.json, ajoutez-le.

Supprimez NodeModules et le fichier package.lock, puis ajoutez-les (installation npm ou installation de fil).

Étape 4:Changer le fichier ".babelrc.js"}

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

Étape 5:Ouvrir un terminal

Ouvrez le terminal et naviguez dans le répertoire de votre projet avec cette commande

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

_ {cela générera un fichier "main.jsbundle" dans le dossier iOS

Étape 6: Ajoutez le fichier "main.jsbundle" dans Xcode.

Ouvrez Xcode et accédez à "Build Phase" sous "Copy Bundle Resource", ajoutez le fichier "main.jsbundle".

Nettoyez votre projet et effacez également vos données dérivées dans Xcode .Cela construira votre projet en mode Publication.

Pour l'erreur "Archive"

Ajoutez cette dépendance dans votre "fichier 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'

Enlevez pod et pod.lock et rajoutez-le. (installation du pod)

Happy Coding :)

1
Vinod Radhakrishnan

Dans mon cas, cette erreur s’est produite lors de l’archivage après la mise à jour de 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

Une grande importance pour résoudre ce problème avait la ligne au-dessus de l'erreur liée à babel-preset-react-native

Après de nombreuses heures à essayer plusieurs solutions, j'ai trouvé une solution en rétrogradant babel-preset-react-native de ^5.0.2 à ^4.0.0 pour que le processus d'archivage fonctionne.

1
Florin Dobre

Problème résolu après la réécriture du script shell. Projet > Phase de construction > Bundle React Code natif et images . Il y avait un espace vide dans le script.

1
Louis Kurniawan