我最近从旧版本的aws放大器升级到版本
"aws-amplify": "^1.0.2"
在这样做的时候,我在尝试上传到我的bucket时立即开始出现错误。[WARN] 38:42.445 StorageClass - error uploading": CredentialsError: "Missing credentials in config"
经过一番挖掘,我发现在最新版本的aws-amplifier中,存储配置中添加了一些新密钥;"凭据"one_answers"级别"。文档中没有以任何方式提到这些,我也无法准确找到这个"凭据"密钥需要什么值才能正常工作(手动配置Auth和Storage(。有人知道这个凭证对象应该是什么样子的吗?
您不需要手动设置凭据密钥,Amplify会自动设置Storage类的凭据。由于您的环境在更新之前就在工作,因此该问题可能与aws-sdk
软件包有关。该问题与node_modules
文件夹中的多个aws-sdk
程序包有关。通常,简单地删除aws-sdk
文件夹是不起作用的,因为您的项目文件是缓存的。以下是如何解决react-native
项目问题的步骤,但您可以根据您的环境进行调整:
-
请确保您的
package.json
文件中没有依赖项下的aws-sdk
,因为aws-amplify
已经包含了AWS SDK。如果package.json
文件中有aws-sdk
,运行命令将其删除:$ npm uninstall aws-sdk --save
-
请确保您使用的是最新版本的
aws-amplify
软件包。 -
从项目文件夹中删除
package-lock.json
文件(不要忘记创建该文件的副本(。 -
运行
$ rm -rf node_modules && npm install
此命令将删除
node_modules
文件夹,并根据package.json
文件重新安装所有程序包。 -
您可以选择通过逐个输入以下命令来清除本地缓存:
$ watchman watch-del-all $ rm -rf /tmp/haste-map-react-native-packager-* $ rm -rf /tmp/metro-bundler-cache-*
这是因为Amplify正在使用aws-sdk来获取credentials(accessKeyId, secretAccessKey)
。但它没有找到,因为你可能没有配置它。所以在配置aws放大之前先配置它。无需卸载任何内容。
AWS.config.update({...credential})
Amplify.configure({...credential})