Реагирует на несоответствие родной версии

198

Получение следующего сообщения, когда я запускаю новый проект, а затем запускаю эмулятор Xcode:

Реактивно-родное несоответствие версий

Javascript версия 0.50.1 Собственная версия: 0.50.0

Убедитесь, что вы перестроили собственный код. ...

Кто-нибудь знает, что здесь происходит, и может мне помочь?

Сэм Рао
источник

Ответы:

342

Вот что я сделал с этим:

Закройте все терминалы и снова запустите сборку.

Вы можете забыть закрыть терминал nodejs из другого проекта, и они установили другую версию реакции.

Таким образом, выборка кода с сервера nodejs конфликтует с нативным.

Val
источник
1
Что делать, если я не хочу закрывать свои открытые в данный момент терминалы (там запущены приложения)? Есть ли другой обходной путь?
Димитар Цонев
1
@DimitarTsonev вы можете просто закрыть тот конкретный терминал, который открывается по реагирующим родным, который показывает Bundling 'index.android.js' 100.0% (1/1), done.
Val
1
заставить полностью использовать версию реакции зависимости в build.gradleработало. благодаря @Val
Jake оливер
react-native run-ios
Закрыл
также запустить, pod installесли вы используете cocoapods.
Array
36

В случае, если вы создали свое реактивное приложение, используя create-Reaction-native-app. У вас должен быть app.json (expo). и файл package.json, проверьте, совпадают ли версии expo и изменились ли они соответствующим образом. Например, в моем случае проблема была в том, что в файле app.json у меня была версия 25.0.0 для атрибута expo sdkVersion , я изменил это на 23.0.0, и все работало.

package.json:

"dependencies": {
    "expo": "^23.0.4",
    "react": "16.0.0",
    "react-native": "^0.50.4"
  }

app.json:

{
  "expo": {
    "sdkVersion": "23.0.0" // before was 25.0.0
  }
}
victoryoalli
источник
Это сработало для меня! Быстрое обновление: вы не можете использовать прямой модуль npm для вашего пакета «native-native» и вместо этого иметь tar-архив. Если это так, вы можете использовать реактивный статус для проверки вашей версии RN. :)
Blakeface
15

Просто зайдите в свой android/app/build.gradleи затем добавьте в dependenciesраздел:

dependencies{
compile ("com.facebook.react:react-native:0.50.3") { force = true } 
}

/// Реактивную нативную версию можно найти в package.json

приятель кунала
источник
5
где мне поменять на ios
Анураг Шривастава
что такое эквивалентное изменение в package.json?
Нейт Гленн
8

просто заставьте реагировать родную версию в файле Gradle уровня приложения для вашего Android, в dependenciesразделе.

compile ("com.facebook.react:react-native:0.52.0") { force = true }

работал на меня

Шубхам Гоэль
источник
2
Это сработало для меня. У меня 0.53.3. Я добавил силу с 0.53.3, перезапустил терминалы, побежал npm start -- --reset-cacheи побежалreact-native run-android
Флорин Добре
6

Я никогда не видел эту ошибку раньше, но когда я не могу заставить Xcode и React-Native хорошо играть вместе, я делаю пару вещей. Проверьте, с какой версией Xcode я работаю. Если это должно быть обновлено, я обновляю это. Тогда очистка сторожа и кеша - второе место, куда я иду. Я не использую команду сброса кэша. Это всегда говорит, что мне нужно проверить кеш, поэтому я пропускаю это (хотя вы можете сделать это, я просто запутался). Я использую rm -rf $ TMPDIR / реакции- *, чтобы избавиться от любых кэшированных сборок. Если это не сработает, я пытаюсь собрать приложение в XCode, а затем отрабатывать свой путь, чтобы собрать его с помощью реакционно-родных run-ios. С этим сообщением об ошибке, кажется, вы могли бы начать с попытки построить его с XCode. Надеюсь, это поможет ... дайте мне знать, как вы продвинулись в этом. Удачи! (Кроме того, вы можете обновить до RN 0.

Джаред Нельсон
источник
Другое дело, что я играл с выставкой. Интересно, если это все испортило
Сэм Рао
Вы можете просто выполнить npm install --save react-native@0.51 Но сначала я бы попробовал собрать его с помощью Xcode. Вы уже сделали это? Если вам нужна помощь, дайте мне знать.
Джаред Нельсон
6

Если вы запускаете приложение React Native через Expo, обновление React Native может вызвать эту ошибку (как указано на https://github.com/expo/expo/issues/923. ).

Если это ваш сценарий, ваши варианты:

  1. Bump Expo (которая указана в вашем package.json ) на версию, совместимую с вашей версией React Native ( если она существует, а может и не быть - судя по связанной проблеме, я полагаю, что поддержка Экспо отстает от выпусков React Native).
  2. Отмените изменения, удалите и переустановите модули Node, извлеките их из Expo, а затем (после проверки того, что вы все еще можете запустить приложение после извлечения) повторите попытку обновления.
Марк Эмери
источник
Экспо поддерживает только реактивный до 59,8 на момент написания. Для совместимости expo / реакции-native см. Docs.expo.io/versions/latest/sdk/overview/#sdk-version (это не та же самая причина ошибки, что и у OP, но, кажется, уместно заметить.)
Tijs Maas
6

У меня была эта проблема в течение самого длительного времени, и ни одно из вышеупомянутых решений не помогло. Я был в процессе обновления своей платформы в create-react-native-appпроекте, пока не обнаружил, что не все версии Expo поддерживают последнюю версию React Native.

Нашли эту страницу по ссылке в документации, которая показывает, какие комбинации версий React Native, React и Expo официально поддерживаются:

Источник: https://github.com/react-community/create-react-native-app/blob/master/VERSIONS.md

Редактирование файлов app.jsonи package.jsonфайлов в соответствии с соответствующими версиями и запуск npm installработали снова.

Ятит Таккер
источник
6

Я использую физическое устройство, в моем случае это решило проблему:

  1. Удалить приложение
  2. lsof -i :8081
  3. kill -9 PID
  4. Перестройте приложение ( react-native run-androidили react-native run-ios)
ade_anugerah
источник
Просто убив все PID lsof -i :8081и перестроив, сделал это для меня на iOS Simulator.
Ронан
То же самое здесь - пробовал Rimraf node_modules, npm start - reset-cache и т. Д. - ничего не получалось. Затем я сделал то же, что и выше, - удалил приложение, использовал taskkill / im node.exe и taskkill / f / PID (номер, указанный на последнем шаге существующего PID), затем отреагировал на собственный запуск android. Работал лакомство!
user1641906
5

Для разработчиков Android, которые не могут исправить это, просто закрыв и перестроив, удалите приложение вручную на эмуляторе / устройстве.

Надун Лиянаге
источник
3
У меня сработало удаление приложения из симулятора IOS.
Негативное_зеро
5

В вашем файле build.gradle добавьте следующее

implementation ("com.facebook.react:react-native:0.51.0") {
    force = true;
}

замените 0.51.0на версию в вашем package.json

Nitish Phanse
источник
4

Попробуйте установить зависимости снова. Это сработало для меня

1.) yarn/npm install
2.)yarn/npm start --reset-cache

Адити
источник
3

Для меня это было связано с react-nativeверсией в dependencyразделе package.jsonфайла. Это было:

"dependencies": {
"expo": "^27.0.1",
"react": "16.3.1",
"react-native": "~0.55.0"
}

Я изменил это:

"dependencies": {
"expo": "^27.0.1",
"react": "16.3.1",
"react-native": "0.52.0"
}

Теперь все отлично работает.

Сейед Мортеза Мусави
источник
3

В моем случае я столкнулся с этим на iOS, и я попытался сбросить и очистить весь кеш, используя приведенную ниже команду, но тоже потерпел неудачу, несмотря на то, что во многих комментариях говорилось, что причина в том, что где-то случайно запускается реагирующий упаковщик, я перезапустил мой макинтош и проблема все еще остались.

watchman watch-del-all && rm -rf node_modules/ && yarn cache clean && yarn install && yarn start --reset-cache

Решение состоит в том, чтобы удалить папку сборки @ /ios/build, а затем выполнить react-native run-iosее

Исаак
источник
3

Я пробовал решения выше, но добавление этого в AndroidManifest.xml, кажется, исправляет это.

  android:usesCleartextTraffic="true"
ketimaBU
источник
1
Это сработало как очарование ... это причина, по которой я никогда не полюблю андроида ... Всегда есть волшебное слово, которое решает ваши проблемы, которые сводят вас с ума на многие часы
пикокод
2

Для других с такой же проблемой на iOS с CocoaPods:

Я попробовал все решения выше, без удачи. У меня есть несколько пакетов с нативными зависимостями в моем проекте, и некоторые из этих необходимых модулей pod устанавливаются. Проблема заключалась в том, что React был указан в моем Podfile, но модуль React не обновлялся автоматически с помощьюreact-native-git-upgrade .

Исправление - обновить все установленные модули, запустив их cd ios && pod install.

brkn
источник
2

В моем случае помогла установка нового виртуального устройства. Сейчас я использую 1 устройство на приложение.

Луминита Балас
источник
2

Экспо-пользователи - убедитесь, что ваша app.jsonSDK-версия и package.jsonэкспо-версия (могут быть равны) совместимы друг с другом.

cherankrish
источник
Спасибо! Это было решение для нового пользователя выставки.
Джаспер Блюз
1

У меня также была эта проблема, используя Экспо и iOS Simulator. Для меня сработало стирание симулятора вHardware > Erase All Content and Settings...

catico
источник
Я уверен, что это можно сделать, просто удалив приложение Expo из эмулятора. Не надо все.
Ajay
1

Возможное исправление:

  1. Удалить пакет-lock.json
  2. Бегать: watchman watch-del-all && rm -rf $TMPDIR/react-* && rm -rf $TMPDIR/haste-map-react-native-packager-* && rm -rf node_modules/&& npm install

Если проблема не устранена, попробуйте выполнить проект непосредственно из Xcode

Это сработало для меня.

Алехо
источник
1

В моем случае (НЕ использую экспо и сборку Android)

package.json

"dependencies": {
    "react": "16.3.1",
    "react-native": "0.55.2"
}

И app.json

{
  "sdkVersion": "27"
}

решил проблему

Ajitsen
источник
Это правда, особенно если вы используете Expo. Для получения дополнительной информации ознакомьтесь с
blakeface
1

Я пытался собрать и запустить приложение React Native из WebStorm и столкнулся с этой проблемой. Простое решение для меня было:

watchman watch-del-all

На macOS, если он watchmanеще не установлен, установите его с помощью Homebrew :

brew install watchman
friederbluemle
источник
1

Иногда это происходит, когда вы пытаетесь запустить без закрытия сервера узла, на котором работало предыдущее приложение, поэтому попробуйте перезапустить React. Для этого просто выполните следующие команды:

1. To kill current processes
killall node -9 

2. To Start React  Native
react-native start 

3. Then Run android
react-native run-android
Чивани Махида
источник
1

В моем случае я изменил expoверсию вручную. Я получил ту же проблему, потому что я забыл обновить sdkVersion в app.json и babel-preset-expo в package.json

После этого запустите: expo r -cочистить кеш и запустить приложение.

Джан Фан
источник
1

Мы сделали исправление, чтобы убедиться, что переменные ANDROID_HOME и PATH были установлены до сборки.

Сначала выполните две нижеприведенные команды, затем соберите приложение для устройства.

export ANDROID_HOME=/Users/username/MyFiles/applications/androidsdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
Саиф Камал
источник
1

Я получил эту классификацию, когда определения типов TypeScript не соответствовали.

EG react-nativeв 0.61.5 в dependenciesи @types/react-nativeв 0.60.0 инdevDependencies .

Как только я обновил devDependencies, он заработал. Не нужно ничего перезагружать.

Томас Хагстрём
источник
0

Это не исправление, но в моем случае на моем устройстве было установлено несколько приложений RN, и я неосознанно пытался «перезагрузить» из неправильного приложения. (Сейчас я разрабатываю два приложения одновременно) Поэтому убедитесь, что вы находитесь в правильном приложении!

Дружественный-робот
источник
0

Попробуйте изменить версию вашего реактивного кода, указанного в файле package.json (в зависимости - реактивная), на версию, указанную в сообщении об ошибке. Затем снова запустите 'npm install'.

Pnar Sbi Wer
источник
Любая идея, как перейти на версию, упомянутую в package.json?
HungrySoul
в вашем package.json вы должны увидеть что-то вроде «Reaction-native»: «^ 0.55.0» в разделе «зависимости». Измените это число (0.55.0 в этом примере) на желаемую версию и снова запустите «npm install».
Pnar Sbi Wer
0

У меня возникла та же проблема при создании моего собственного приложения прорекламирования для Android, и я сделал следующее, что сработало для меня.

«Версия JavaScript 0.50.1» в консоли ошибок является версией-реакцией в вашем package.jsonфайле. Убедитесь, что это та же версия, что и «Собственная версия 0.50.0» в консоли ошибок.

  1. Я обновил собственную версию реагирования до «родной версии 0.50.0», как было предложено в консоли ошибок.
  2. Перестройте приложение react-native run-android.
Ананд Ядав
источник
0

Убедитесь, что в вашем эмуляторе включен wifi

Г. Аднане
источник
0

Открыть проектный каталог / android / app / build.gradle

Пытаться:

compile ("com.facebook.react: Reaction-native: 0.51.0") {force = true}

Вместо компиляции "com.facebook.react: Reaction-native: 0.51.0" {force = true}

Ref .: Ссылка

Хуршид Ансари
источник