Я создаю приложение 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 и получить нужную среду, или я сделал что-то не так?





В вашем файле .gitignore может быть amplifyconfiguration.json. Просто закомментируйте этот файл, и ваша сборка будет работать нормально.
Файл amplifyconfiguration.json обычно создается интерфейсом командной строки AWS Amplify при настройке проекта Amplify. Он содержит конкретные сведения о конфигурации для различных сред, такие как конечные точки API, настройки аутентификации и другие ресурсы в вашем бэкэнде AWS.
Если у вас возникли ошибки, связанные с тем, что файл amplifyconfiguration.json не найден или не устранен в процессе сборки, обязательно выполните следующие действия:
Проверьте существование файла: убедитесь, что файл amplifyconfiguration.json существует в каталоге вашего проекта.
Контроль версий: убедитесь, что файл отслеживается системой контроля версий (Git) и не игнорируется git, если это необходимо для процесса сборки.
Настройка Amplify: дважды проверьте, что ваш проект AWS Amplify правильно настроен и синхронизирован (при необходимости запустите amplify pull), чтобы создать файл amplifyconfiguration.json.
Включение amplifyconfiguration.json необходимо для правильного взаимодействия вашего приложения с сервисами AWS, настроенными через Amplify, как во время разработки, так и в производственных сборках.
Решением было создать файл .easignore. Он имеет приоритет над файлом .gitignore.
Я скопировал .gitignore и исключил из него amplifyconfiguration.json и aws-exports.js.
.easignore мне не помог.
base64 -i ./src/amplifyconfiguration.jsonProject secrets на своей странице выставки. Добавьте AMPLIFY_CONFIGURATION_BASE64 . Значение равно шагу 0.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"
}
}
}
}