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


198

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

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

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

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

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

Ответы:


342

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

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

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

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


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

Это сработало для меня! Быстрое обновление: вы не можете использовать прямой модуль 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)

Просто убив все 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


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"

1
Это сработало как очарование ... это причина, по которой я никогда не полюблю андроида ... Всегда есть волшебное слово, которое решает ваши проблемы, которые сводят вас с ума на многие часы
пикокод

2

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

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

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


2

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


2

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


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

1

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


Я уверен, что это можно сделать, просто удалив приложение 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"
}

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


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

1

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

watchman watch-del-all

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

brew install watchman

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


Любая идея, как перейти на версию, упомянутую в 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

Открыть проектный каталог / 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 .: Ссылка

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.