Arquivo "RCTBundleURLProvider.h" não encontrado - AppDelegate.m

124

Estou tentando executar meu aplicativo React Native no XCode e continuo recebendo esse erro. Não consigo descobrir como resolver o problema. Alguma sugestão?

Captura de tela do erro no XCode:

captura de tela

FilosoferKing
fonte
Sugiro que, antes de aplicar qualquer alteração, limpe seu projeto e tente executá-lo porque o mesmo acontece no meu caso. Eu apenas limpo meu projeto e o executo e ele funciona.
Bittu
Você definitivamente deve mudar a resposta certa! A resposta da @mark é a certa e todos os procuram.
Serdar Değirmenci

Respostas:

64

Exclua os módulos do nó, execute npm install(ou, melhor ainda, o fio) e, após o término do download, execute o react-native upgradeque deve oferecer a opção de substituir arquivos antigos pelos de modelo, ao fazer isso, você vincula novamente suas dependências nativas em react-native, que deve corrigir seu problema. Claro que não se esqueça de limpar seu projeto no Xcode.

Armands Malejevs
fonte
5
Você pode usar a nova ferramenta de atualização baseada no Git, pois ela solucionava conflitos automaticamente. Execute "npm install -g react-native-git-upgrade" seguido de "react-native-git-upgrade".
bitsand
2
Eu segui sugestões, mas nogo .. eu tenho a versão 0.41.2 react-native, existe alguém que consiga corrigir isso na versão 0.41.2? obrigado.
Joemalski
2
isso também não funcionou para mim. usando xcode 8.2.1 e reagir nativo 0.41.2
Terry Ray
1
Eu tentei isso, e ele explodiu algumas configurações importantes do projeto. Estou criando uma extensão de ação e depois de executar react-native upgradetodas as minhas configurações de compilação foram excluídas.
Shane O Sullivan
1
gostaria de acrescentar 'apagar o yarn.lock' arquivo para que você pode usar 'npm install'
user1709076
247

xcode Produto-> Esquema-> Gerenciar Esquemas, clique em '+' no Destino para selecionar "Reagir" e definir que o Reagir é compartilhado.

marca
fonte
10
Apertei '+' e não há "React" para selecionar. Uma caixa de diálogo aparece com "Target: MyApp" e Nome: MyApp. "Nada diz que Reagir ou compartilhar."
Pete Alvin
Isso aconteceu comigo depois de instalar os cocopods que criaram um arquivo xcworkspace. Meu xcodeproj existente não tinha "React" como opção, mas o xcworkspace.
23417 AdamG #
@PeteAlvin eu corri Run "npm instalar -g reagem-nativa-git-upgrade seguido de 'reagir nativo-git-upgrade' e, em seguida, ele mostrou a opção reagir para mim
Paul Fitzgerald
1
Depois que eu fiz que constroem Sucedido, mas Run não está activo no Xcode depois disso
Lucky_girl
Muito obrigado. Eu me pergunto por que essa não é a solução aceita.
Gaurav Grover
19

Para todos aqueles que estão usando o React Native 0.40.0 ou superior, as Importações de cabeçalho têm uma grande alteração em relação ao RN 0.40.0 e resultam em muitos erros de arquivo .h não encontrados. react-native-git-upgradeCorrigido o problema para mim durante a depuração, mas a compilação falha no release / archive.

Estou usando o RN 0.42.3 com cocoapods e o Xcode 8.2.1

Para corrigir isso completamente, vá para Xcode> Produto> Esquema> Editar esquema>

  1. Desmarcar Paralelizar Compilação insira a descrição da imagem aqui
  2. Clique no botão + em Destinos e adicione Reagir insira a descrição da imagem aqui
  3. Arraste o React adicionado para o topo da lista em Destinos. insira a descrição da imagem aqui

Agora limpe o projeto e crie

Hariks
fonte
4
Isso não corrigiu para mim, reagir v.0.44.0
Justus Eapen
17

Nenhuma das outras sugestões estava corrigindo meu erro, mas esta foi o que ocorreu.

1 - Criar Podfile

Crie um arquivo nomeado ios/Podfiledentro do aplicativo nativo do react com o seguinte conteúdo:

# You Podfile should look similar to this file. React Native currently does not support use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'

target '<YOUR_APP_NAME>' do
  # Fixes required for pod specs to work with rn 0.42
  react_native_path = "../node_modules/react-native"
  pod "Yoga", :path => "#{react_native_path}/ReactCommon/yoga"
  pod "React", :path => react_native_path, :subspecs => [
    'Core',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTGeolocation',
    'RCTImage',
    'RCTLinkingIOS',
    'RCTNetwork',
    'RCTSettings',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket'
  ]

  pod 'GoogleMaps'  # <~~ remove this line if you do not want to support GoogleMaps on iOS

# when not using frameworks  we can do this instead of including the source files in our project (1/4):
#  pod 'react-native-maps', path: '../../'
#  pod 'react-native-google-maps', path: '../../'  # <~~ if you need GoogleMaps support on iOS
end

2 - Instale o Podfile

Execute o comando pod installde dentro da pasta ios.

3 - Redefinir XCode

Reinicie o XCode e o erro deve desaparecer.

Erich
fonte
Isso resolve o problema até certo ponto. Mas o que descobri foi que novas configurações parecem não respeitar a ordem de compilação, portanto elas não estão recebendo scripts personalizados. Fundamentalmente, esse é um problema com
react
9

Eu me deparei com esse problema após minha primeira tentativa de executar uma compilação React no XCode, e tudo que eu precisava fazer era compilar e executar para que o erro desaparecesse (depois de escolher uma equipe e aprovisionar adequadamente). Às vezes, o XCode mostra erros que não são realmente erros até compilar e vincular as coisas na primeira vez.

Dave Cole
fonte
Eu também. É estranho, basta criar e depurar, os erros desapareceram. Não sei porque.
Zhang Buzz
@PaulFitzgerald - Uma licença para quê? Eu não acredito que eu precisava de licença nada ...
Dave Cole
8

A solução que funciona para mim é compartilhar o Reactesquema.

Se você não tiver o esquema React, crie um novo por Selecting scheme menu -> Manage Scheme -> + -> choose Reacte marque React esquema como Compartilhado

insira a descrição da imagem aqui

insira a descrição da imagem aqui insira a descrição da imagem aqui

Além disso, se você usar o Xcode 10, vá para File -> Project Settingse selecione Legacy build system

insira a descrição da imagem aqui

onmyway133
fonte
1
obrigado! Às vezes, é difícil corrigir esse tipo de problema sem ter conhecimento do desenvolvimento nativo do iOS e do Android e das ferramentas usadas.
Qasimalbaqali # 31/18
1
@ onmyway133 Gostaria de poder votar mais sua resposta! Obrigado
Mohammad Abbas
7

Resolvi esse problema seguindo as etapas:

  1. No xcode, escolha a raiz do projeto.
  2. Arraste React.xcodeprojde Librariespara a raiz do projeto.
  3. Clique no nome do projeto (no meu caso, nome SaleKit) emTARGETS
  4. Escolher Build Phases
  5. No menu suspenso de Target DependenciesadicionarReact
  6. Reconstruir ou executar novamente

insira a descrição da imagem aqui

Robusto
fonte
1
Isso funcionou para mim! Eu uso o gerenciador de esquemas react-native, e, portanto, era o meu esquema de preparação que não seria construído até que eu adicionasse isso. Funcionou anteriormente por meses, e de repente não funcionou após um novo clone. Suspeito que meus intervalos NPM no package.json sejam muito generosos.
Funcionou para mim, sem a necessidade de arrastar o React.xcodeproj para fora da pasta Bibliotecas.
ErmannoS
6

Para o meu caso no ReactNative "0.54.2", resolvi-o com a seguinte solução

No Xcode selecione Product->Scheme->Manage Schemes, desmarque 'YourProject'-tvOS defina-o como Não compartilhado

JXLai
fonte
1
Funciona para mim, versão nativa react: 0.55.4. Graças
Adarsh
1
Trabalhou para mim! Eu excluí o alvo do tvOS antes e esqueci de removê-lo como esquema! => RN 0,56
BigPun86
4

Melhor solução :

Abra 'Build Settings' para o seu projeto no Xcode, procure 'Header Search Path'.

Clique duas vezes ao lado de 'Caminho da pesquisa de cabeçalho', onde outras propriedades têm um 'sim' ou 'não'

Agora adicione o seguinte ao "Caminho da pesquisa de cabeçalho" (em Configurações de compilação):

$(SRCROOT)/../node_modules/react-native/React
$(SRCROOT)/../node_modules/react-native/React/Base

Não se esqueça Torne os dois recursivos.

Mega Area
fonte
3

Execute npm installno diretório do projeto para instalar a react-nativesolução desse erro.

Paul Brittain
fonte
3

Você pode estar executando o .xcodeprojarquivo após a instalação do pod.

Feche e abra o .xcworkspacearquivo. Funcionou para mim.

Saranjith
fonte
2

No diretório base do projeto, eu corro:

node_modules/react-native/packager/packager.sh --reset-cache

O que resultou em:

Scanning 554 folders for symlinks in /Users/..../work/..../react_tutorial/AwesomeProject/node_modules (15ms)
 ┌────────────────────────────────────────────────────────────────────────────┐
   Running packager on port 8081.                                            
                                                                             
   Keep this packager running while developing on any JS projects. Feel      
   free to close this tab and run your own packager instance if you          
   prefer.                                                                   
                                                                             
   https://github.com/facebook/react-native                                  │
                                                                             
 └────────────────────────────────────────────────────────────────────────────┘
Looking for JS files in
   /Users/..../work/...../react_tutorial/AwesomeProject

Loading dependency graph... ERROR  Packager can't listen on port 8081
Most likely another process is already using this port
Run the following command to find out which process:

lsof -i :8081

Descobri que o gerenciador de pacotes não pode ser executado quando outro processo do empacotador estiver em execução.

Eu encontrei o processo em execução com:

lsof -i :8081

Do que eu kill 9 ...o processo.

Depois que eu fechei o Xcode, execute:

npm install

E reiniciei o Xcode, a partir deste momento tudo funcionou como esperado !!

Oded Regev
fonte
2

Eu tive o mesmo problema e o corrigi colocando RNFIRMessaging.h acima do React / RCTBundleURLProvider.h

Então, parece que eu vou ficar assim:

#import "AppDelegate.h"
#import "RNFIRMessaging.h"

#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
Jefferson Filho
fonte
2

Tente o seguinte:

  1. Limpe ( cmd+ shift+ K).
  2. Criar núcleo React - selecione React como o esquema no Xcode e construa-o ( cmd+ B).
  3. Crie a biblioteca que está falhando (por exemplo, RCTText).
  4. Crie seu aplicativo.
jyson
fonte
1
Como você constrói uma biblioteca exatamente?
AlxVallejo 26/05
2

clique em Produto-> Esquema-> Gerenciar Esquemas -> +. e adicione reagir como compartilhado. Também garanta que o nome do seu projeto também esteja lá.

Eran Or
fonte
1

Enfrentei o mesmo problema., Em seguida, excluí o nó .try para usar essas etapas

  1. Exclua a pasta node_modules - rm -rf node_modules && npm install
  2. Redefinir cache do empacotador - rm -fr $ TMPDIR / react- * ou node_modules / react-native / packager / packager.sh --reset-cache
  3. Relógios watchman claros - watchman watch-del-all

então construa e veja

Esporte
fonte
Sim, eu também tentei isso na versão react-native 0.41.2 ainda não está funcionando tão bem ... alguma entrada? obrigado.
Joemalski
1

Descobri que a minha correção para este problema após a atualização Reagir era mudar a declaração de #import "RCTBundleURLProvider.h"que#import <React/RCTBundleURLProvider.h>

ays0110
fonte
1

Para mim substituindo

#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

de

#import <RCTBundleURLProvider.h>
#import <RCTRootView.h>

no arquivo AppDelegate.m funcionou.

Pankti Shah
fonte
0

Se você não tiver executado, npm installé provável que encontre esse problema.

Harkirat Saluja
fonte
0

Eu tentei todas as sugestões e nenhuma delas funcionou no i deletei o repositório e clonei novamente e funcionou para mim, então minha sugestão é confirmar suas alterações e clonar novamente o repositório que funcionou para mim.

ragar90
fonte
0

Eu passei por todas as respostas mencionadas acima.

Aqui está a solução trabalhada para mim:

PASSO 1:

Corre:

npm install react-native-fcm --save 

Esse resultado ao tornar o diretório em seu projeto em node_modules> react-native-fcm

Adicione react-native-fcm ao seu projeto

PASSO 2:

Você precisa adicionar '$(SRCROOT)/../node_modules/react-native-fcm/ios'aos caminhos de pesquisa do cabeçalho nas configurações de compilação.

Adicionar aos caminhos de pesquisa do cabeçalho

Essas duas etapas funcionaram para remover o erro.

Para mais detalhes, você pode acessar estes links:

https://github.com/evollu/react-native-fcm/issues/63

https://github.com/evollu/react-native-fcm/issues/21

Harjot Singh
fonte
0

No meu caso, não pude excluir o node_modules e reinstalar e também não pude fazê-lo react-native-git-updgradeou react-native upgradeporque queria permanecer no RN-0.59 porque .60 causa problemas para minhas dependências.

De qualquer forma, minha situação era a falta do arquivo 'React / RCTBundleURLProvider.h'. Eu já tinha o React disponível nos meus esquemas. Não estava no meu diretório de bibliotecas. Eu verifiquei as configurações de compilação do meu alvo .

Dentro das dependências de destino, eu também tinha o React lá.

Excluí a dependência de destino 'React' e, em seguida, adicionei novamente. pastas de compilação limpas, projeto reconstruído. funcionou.

Jim
fonte
Não sei se isso importa, mas há um erro de digitação em: react-native-git-updgrade
Josh
0

Estou usando o React Native 0.61. Criei uma extensão de compartilhamento e estava recebendo esse erro. Eu precisava substituir:

#import "RCTBundleURLProvider.h"

com

#import "React/RCTBundleURLProvider.h"
Eric Wiener
fonte
-1

você precisa instalar reagir nativo, na execução do terminal

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

então

brew install node
brew install watchman
npm install -g react-native-cli

fonte:
https://facebook.github.io/react-native/docs/getting-started.html

Olzh
fonte
1
Não é uma resposta para esta pergunta
S.Hossein Asadollahi
-2

Verifique se o caminho para o seu projeto não possui espaços. Apenas renomear pastas e excluir espaços resolve o problema para mim.

user5807443
fonte