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,您无需再做任何事情。