Создать React Native App. - Файлы плагинов / пресетов не позволяют экспортировать объекты, только функции - PullRequest
0 голосов
/ 06 июля 2018

Нужна помощь, я получаю странную ошибку из левого поля, которую я не смог отладить. Этот проект успешно упаковывался до вчерашнего дня после того, как я установил свой собственный проект реагирования на другой Mac.

Мне интересно, если это из-за версий пакетов npm мне пришлось переустановить.

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

Мой файл babelrc выглядит следующим образом -

{
    "presets": ["babel-preset-expo"],
    "env": {
        "development": {
            "plugins": ["transform-react-jsx-source"]
        }
    }
}

И мой пакет. Json

{
  "name": "hancho_frontend",
  "version": "0.1.0",
  "private": true,
  "devDependencies": {
    "jest-expo": "~27.0.0",
    "react-native-scripts": "^1.14.1",
    "react-test-renderer": "16.3.1"
  },
  "main": "./node_modules/react-native-scripts/build/bin/crna-entry.js",
  "scripts": {
    "start": "react-native-scripts start",
    "eject": "react-native-scripts eject",
    "android": "react-native-scripts android",
    "ios": "react-native-scripts ios",
    "test": "jest"
  },
  "jest": {
    "preset": "jest-expo"
  },
  "dependencies": {
    "@expo/vector-icons": "^6.2.0",
    "axios": "^0.18.0",
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.4",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "babel-upgrade": "0.0.19",
    "color": "^2.0.0",
    "expo": "^27.1.0",
    "hoist-non-react-statics": "^2.3.0",
    "moment": "^2.22.2",
    "prop-types": "^15.6.2",
    "react": "^16.3.1",
    "react-dom": "^16.4.1",
    "react-fontawesome": "^1.6.1",
    "react-native": "^0.56.0",
    "react-native-dropdownalert": "^3.1.2",
    "react-native-extended-stylesheet": "^0.8.0",
    "react-navigation": "^2.6.1",
    "react-redux": "^5.0.7",
    "react-router-dom": "^4.3.1",
    "redux": "^4.0.0",
    "redux-axios-middleware": "^4.0.0",
    "redux-logger": "^3.0.6",
    "redux-thunk": "^2.3.0",
    "webpack": "^4.15.1"
  }
}

У меня определенно есть пакеты, которые я не использую, но в прошлом это не вызывало проблем.

Я очистил кеш, удалил и переустановил node_modules. Я также вернулась к более ранней версии выставки, с которой работала ранее. Все еще не повезло.

Заранее спасибо!

Ответы [ 4 ]

0 голосов
/ 06 августа 2018

Как дополнение к ответу @fagerbua. Если вы хотите использовать response-native@0.56, вам нужно изменить .babelrc на { "presets": [ "react-native" ] } вам больше не нужно jest-react-native, но вам нужно использовать babel-preset-react-native@5

0 голосов
/ 01 августа 2018

create-реакции-native-приложение использует Expo, которая на текущий выпуск (SDK v29) не поддерживает React Native 0.56.В объявлении о выпуске объясняется, почему:

Мы не обновили React Native до версии 0.56.0 для этого выпуска по двум причинам.Во-первых, что особенно важно, в React Native 0.56.0 babel был обновлён до 7.0.0-beta.47 с ^ 6.24.1.Предыдущий опыт с обновлениями babel показал нам, что они могут быть разочаровывающими и отнимающими много времени для разработчиков, которые просто хотят выпустить свое приложение и минимизировать время, затрачиваемое на разрушение инфраструктуры, поэтому мы хотели дать этому времени больше времени для стабилизации.

Во-вторых, 0.56.0 содержит некоторые ошибки и не включает достаточно полезных функций и исправляет более 0.55.4, чтобы оправдать компромисс обновления babel.

Если вы действительно хотите использовать RN 0.56, ивам не нужно использовать Expo, вы можете удалить зависимость, запустив npm run eject в проекте.Вы по-прежнему будете получать подобное сообщение об ошибке при загрузке приложения, но из-за другой зависимости, которая появляется при извлечении.Чтобы исправить это, установите babel-preset-react-native@5 и замените «babel-preset-реагировать-native-stage-0 / decorator-support» на «babel-preset-реагировать-native» в файле проекта .babelrc.(Обратите внимание, что .babelrc выглядит по-другому после выполнения команды eject.)

0 голосов
/ 05 августа 2018

Мое приложение извлечено, и ответ от fagerbua помог, но мне пришлось немного потрудиться, чтобы оно заработало. В конце концов я запустил новое приложение create-реагировать-нативное, выбросив и отредактировав мои package.json и .babelrc для использования babel-preset-react-native, версии 0.56.0 react-native и версии 16.4.1 react. Мне также пришлось удалить плагин transform-react-jsx-source из файла .babelrc. Ниже приведены файлы, используемые для минимально работающего react-native@0.56.0 приложения:

.babelrc file:

{
  "presets": [
    "babel-preset-react-native"
  ]
}

package.json:

{
  "name": "myapp",
  "version": "0.1.0",
  "private": true,
  "devDependencies": {
    "babel-preset-react-native": "^5",
    "jest": "^23.4.2",
    "jest-react-native": "^18.0.0",
    "react-test-renderer": "16.3.1"
  },
  "scripts": {
    "start": "react-native start",
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "test": "jest"
  },
  "jest": {
    "preset": "react-native"
  },
  "dependencies": {
    "react": "^16.4.1",
    "react-native": "^0.56.0"
  }
}

Как только я начал работать с базовым приложением, я скопировал эти изменения обратно в основное приложение, удалил папку node_modules, сделал npm install и все просто заработало. Я не уверен, нужна ли была обновленная версия jest, я не использую jest, но она была автоматически добавлена ​​при создании.

0 голосов
/ 06 июля 2018

Я попытался обновить реактивный с 0.55.2 до 0.53.0 и столкнулся с этой ошибкой. Я не пытался отследить его за этим, но понижение реакции-нативного до 0.55 должно исправить это.

...