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


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.


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.


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


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.


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.


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


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


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


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.


3

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


3

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

Feche e abra o .xcworkspacearquivo. Funcionou para mim.


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


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>

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.

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á.


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


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>


1

Para mim substituindo

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

de

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

no arquivo AppDelegate.m funcionou.


0

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


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.


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


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.


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"


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.