EAS 构建找不到 aws-exports
EAS build can't find aws-exports
我有一个使用 AWS Amplify 的 Expo 项目。我目前正在使用 Expo 的 EAS 在移动设备上进行部署。
我经常 运行 遇到这个错误:
❌ Metro encountered an error:
Unable to resolve module ./src/aws-exports from /Users/expo/workingdir/build/App.tsx:
None of these files exist:
* src/aws-exports(.native|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx|.ios.js|.native.js|.js|.ios.jsx|.native.jsx|.jsx|.ios.json|.native.json|.json)
* src/aws-exports/index(.native|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx|.ios.js|.native.js|.js|.ios.jsx|.native.jsx|.jsx|.ios.json|.native.json|.json)
11 | import Amplify from 'aws-amplify';
> 12 | import awsconfig from './src/aws-exports';
15 | Amplify.configure(awsconfig);
但是,我有文件 aws-exports
,我可以在本地 运行 正常。有时我可以毫无问题地构建。还没有想出它何时发生或不发生的模式。
我怀疑这可能与gitignore
有关(我认为 EAS 可能会在上传到服务器之前对其进行检查)。我已经尝试使用 --clear-cache
运行 命令,但没有发现任何效果。
关于我可以做什么有什么建议吗? :)
EAS 构建可以访问与 git 上相同版本的代码。
最佳选择是:
- 将 aws-exports.js 文件编码为 base64
- 将编码值添加为 EXPO 秘密环境变量
- 在预安装阶段
"eas-build-pre-install"
npm 脚本中将该环境变量解码回 aws-exports.js。即:
"scripts":{
"eas-build-pre-install": "echo $AWS_EXPORTS | base64 -d > ./src/aws-exports.js",
...
}
aws-exports.js
有时更改过于频繁,如果您采用 base64 路线,则需要记住始终更新它。另一种方法(如果不是更好的方法)是创建一个 .easignore
文件并复制 .gitignore 的内容,然后排除 aws-exports.js
文件。
EAS 将使用 .easignore
而不是 .gitignore
,您无需再做任何事情。
我有一个使用 AWS Amplify 的 Expo 项目。我目前正在使用 Expo 的 EAS 在移动设备上进行部署。
我经常 运行 遇到这个错误:
❌ Metro encountered an error:
Unable to resolve module ./src/aws-exports from /Users/expo/workingdir/build/App.tsx:
None of these files exist:
* src/aws-exports(.native|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx|.ios.js|.native.js|.js|.ios.jsx|.native.jsx|.jsx|.ios.json|.native.json|.json)
* src/aws-exports/index(.native|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx|.ios.js|.native.js|.js|.ios.jsx|.native.jsx|.jsx|.ios.json|.native.json|.json)
11 | import Amplify from 'aws-amplify';
> 12 | import awsconfig from './src/aws-exports';
15 | Amplify.configure(awsconfig);
但是,我有文件 aws-exports
,我可以在本地 运行 正常。有时我可以毫无问题地构建。还没有想出它何时发生或不发生的模式。
我怀疑这可能与gitignore
有关(我认为 EAS 可能会在上传到服务器之前对其进行检查)。我已经尝试使用 --clear-cache
运行 命令,但没有发现任何效果。
关于我可以做什么有什么建议吗? :)
EAS 构建可以访问与 git 上相同版本的代码。 最佳选择是:
- 将 aws-exports.js 文件编码为 base64
- 将编码值添加为 EXPO 秘密环境变量
- 在预安装阶段
"eas-build-pre-install"
npm 脚本中将该环境变量解码回 aws-exports.js。即:
"scripts":{
"eas-build-pre-install": "echo $AWS_EXPORTS | base64 -d > ./src/aws-exports.js",
...
}
aws-exports.js
有时更改过于频繁,如果您采用 base64 路线,则需要记住始终更新它。另一种方法(如果不是更好的方法)是创建一个 .easignore
文件并复制 .gitignore 的内容,然后排除 aws-exports.js
文件。
EAS 将使用 .easignore
而不是 .gitignore
,您无需再做任何事情。