В Expo Build React Native Apps отсутствует amplifyconfiguration.json

Я создаю приложение React Native, используя Amplify. Приложение работает нормально, и я могу запустить его локально, используя npx expo start.

Сейчас я пытаюсь использовать eas build, и для сборок iOS и Android (локально или в облаке) происходит сбой со следующей ошибкой:

Error: Unable to resolve module ../amplifyconfiguration.json from /home/expo/workingdir/build/frontend/app/_layout.tsx: 
None of these files exist:
  * amplifyconfiguration.json(.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.mjs|.native.mjs|.mjs|.android.js|.native.js|.js|.android.jsx|.native.jsx|.jsx|.android.json|.native.json|.json|.android.cjs|.native.cjs|.cjs|.android.scss|.native.scss|.scss|.android.sass|.native.sass|.sass|.android.css|.native.css|.css)
  * amplifyconfiguration.json/index(.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.mjs|.native.mjs|.mjs|.android.js|.native.js|.js|.android.jsx|.native.jsx|.jsx|.android.json|.native.json|.json|.android.cjs|.native.cjs|.cjs|.android.scss|.native.scss|.scss|.android.sass|.native.sass|.sass|.android.css|.native.css|.css)
  21 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment
  22 | // @ts-ignore - amplify config is git ignored, as it depends on the environment, should be generated when you pull
> 23 | import config from '../amplifyconfiguration.json';
     |                     ^
  24 | import { enGB, registerTranslation } from 'react-native-paper-dates';
  25 | import { fetchAuthSession } from 'aws-amplify/auth';

Является ли единственным решением каким-то образом войти в систему, чтобы расширить процесс сборки EAS и получить нужную среду, или я сделал что-то не так?

Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
1
0
95
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

В вашем файле .gitignore может быть amplifyconfiguration.json. Просто закомментируйте этот файл, и ваша сборка будет работать нормально.

Файл amplifyconfiguration.json обычно создается интерфейсом командной строки AWS Amplify при настройке проекта Amplify. Он содержит конкретные сведения о конфигурации для различных сред, такие как конечные точки API, настройки аутентификации и другие ресурсы в вашем бэкэнде AWS.

Если у вас возникли ошибки, связанные с тем, что файл amplifyconfiguration.json не найден или не устранен в процессе сборки, обязательно выполните следующие действия:

  1. Проверьте существование файла: убедитесь, что файл amplifyconfiguration.json существует в каталоге вашего проекта.

  2. Контроль версий: убедитесь, что файл отслеживается системой контроля версий (Git) и не игнорируется git, если это необходимо для процесса сборки.

  3. Настройка Amplify: дважды проверьте, что ваш проект AWS Amplify правильно настроен и синхронизирован (при необходимости запустите amplify pull), чтобы создать файл amplifyconfiguration.json.

Включение amplifyconfiguration.json необходимо для правильного взаимодействия вашего приложения с сервисами AWS, настроенными через Amplify, как во время разработки, так и в производственных сборках.

Ответ принят как подходящий

Решением было создать файл .easignore. Он имеет приоритет над файлом .gitignore.

Я скопировал .gitignore и исключил из него amplifyconfiguration.json и aws-exports.js.

.easignore мне не помог.

  1. Выполните эту команду. base64 -i ./src/amplifyconfiguration.json
  2. Перейдите в раздел Project secrets на своей странице выставки. Добавьте AMPLIFY_CONFIGURATION_BASE64 . Значение равно шагу 0.
  3. Добавьте eas-build-pre-install в package.json.
"scripts": {
    "dev": "expo start",
    "android": "expo run:android",
    "ios": "expo run:ios",
    "dev:clean": "expo start -c",
    "start": "expo start --dev-client",
    "build:ios": "react-native bundle --entry-file=\"index.js\" --bundle-output=\"./ios/main.jsbundle\" --dev=false --platform=\"ios\"",
    "eas-build-pre-install": "echo $AMPLIFY_CONFIGURATION_BASE64 | base64 -d > ./src/amplifyconfiguration.json"
  },

Файл amplifyconfiguration.json, содержащий вашу конфигурацию Amplify, может не быть включен в процесс сборки.

Попробуйте, если это сработает -

Option 1: Include amplifyconfiguration.json in Your Build.

Добавьте amplifyconfiguration.json в свой проект:

Run amplify pull to generate to check if amplifyconfiguration.json is 
present in your local environment or not.

If the file is excluded from your repository via .gitignore, you may need 
to include it during the build process by copying it to the appropriate 
directory before the build starts.

Вариант 2. Автоматизируйте процесс Amplify Pull во время сборки

1.Create a script to login and pull Amplify environment:
2.Add the script to your build process:
JSON file - 
{
  "build": {
    "development": {
      "env": {
        "AMPLIFY_APP_ID": "<your-app-id>",
        "AMPLIFY_ENV_NAME": "<your-environment>"
      },
      "preBuildCommand": "bash amplify-setup.sh",
      "node": "16.x",
      "android": {
        "image": "default",
        "ndk": "21.4"
      },
      "ios": {
        "image": "default"
      }
    }
  }
}

Другие вопросы по теме