React-native, "Нативный модуль не может быть нулевым"
Я просто обновляю React-native с 0.28 до 0.30 и получаю эту ошибку:
Msgstr "Нативный модуль не может быть нулевым".
Кажется, проблема в линии/пакете:
var PushNotification = require('react-native-push-notification');
Ответы
Ответ 1
Жалобы с красным ящиком реагировать-native не могут найти символ <unkown>
в PushNotificationIOS.js line 18
.
Обычно это происходит, когда вы не связываете третий lib с вашей целью, а NativeModules ничего не обнаруживают при попытке.
Чтобы решить эту проблему, ваш Project Navigator → Target → General → Linked Frameworks and Libraries, убедитесь, что у somelib.a
есть.
В вашем случае, пожалуйста, следуйте инструкциям по установке ios и соответствующему интерактивному документу
Ответ 2
Когда-нибудь, если у вас уже есть другой реактивный пакет, уже запущенный для другого приложения. Вы можете увидеть эту проблему.
Особенно, если версии с поддержкой реакции одинаковы, и для ранее запущенного приложения требуется собственный модуль, который недоступен в текущем приложении.
В этих случаях вы можете убить терминал реактивного упаковщика и перезапустить его, и проблема должна исчезнуть.
Также, если это одно и то же приложение, и вы только что обновили его. Убедитесь, что он правильно связан. Если вы снова не вызвали реакцию на связь.
Ответ 3
В моем случае, запуск $ pod install
внутри каталога /ios сделал свое дело!
Ответ 4
Я думаю, что это связано с тем, как экспортировать и импортировать ваши модули. Убедитесь, что каждый соответствующий
Если вы экспортируете свой модуль, как этот module.exports = moduleName;
Вы должны импортировать с помощью var moduleName = require('moduleName');
Если вы экспортируете свой модуль с помощью export default moduleName;
, Импортировать импортировать с помощью import ModuleName from './ModuleName;
Просмотрите весь ваш экспорт и импорт.
Ответ 5
удалить реагирующее-push-уведомление в node_modules
запустить npm install [email protected]
Ответ 6
Пожалуйста, используйте собственный пакет push-уведомлений ios для сообщества, а не для собственного.
https://github.com/react-native-community/react-native-push-notification-ios
Удалите проект RCTPushNotification из своих библиотек и попробуйте использовать push-уведомление ios-native-community. Вы должны следовать руководству. (Есть некоторые различия в xcode и линковке.)
Ответ 7
если это кому-то поможет.
Ручная ссылка на библиотеку в
node_modules/реакции-нативный/библиотеки /PushNotificationIOS/RCTPushNotification.xcodeproj для ios
https://facebook.github.io/react-native/docs/linking-libraries-ios#manual-linking
это где ручное связывание относится к. не реагирует-родной-push-уведомление
Ответ 8
У моей проблемы были те же самые симптомы, но другая причина. У меня было два открытых проекта React Native в двух разных экземплярах Xcode. Мой пакет Metro все еще работал из проекта A и вызывал проблемы при запуске проекта B в симуляторе.
Исправление: закройте старое окно терминала, созданное Xcode, на котором запущен Metro Bundler, и перезапустите проект.
Ответ 9
Попробуйте команду
$pod install
в YourProject/ios
. Это сработало для меня.
Надеюсь, это поможет?