You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

@aws-sdk/credential-providers无fromNodeProviderChain导出的问题

解决@aws-sdk/credential-providers中fromNodeProviderChain导出不存在的问题

问题根源

fromNodeProviderChain是仅适用于Node.js环境的凭证提供者,你的React应用运行在浏览器环境(即使本地用Vite开发,最终代码还是在浏览器中执行)。@aws-sdk/credential-providers包针对浏览器环境做了裁剪,不会包含Node.js专属的导出,因此出现找不到该导出的错误。

可行解决方案

方案一:本地开发时手动加载CLI生成的会话凭证

AWS CLI生成的会话令牌会保存在本地.aws/credentials文件中(Windows路径:C:\Users\<用户名>\.aws\credentials,Mac/Linux路径:~/.aws/credentials)。你可以从中提取临时凭证,通过环境变量传入应用:

  1. 在项目根目录创建.env文件,填入从凭证文件中获取的对应值:
AWS_ACCESS_KEY_ID=你的临时Access Key ID
AWS_SECRET_ACCESS_KEY=你的临时Secret Access Key
AWS_SESSION_TOKEN=你的临时Session Token
  1. 在代码中直接使用这些环境变量初始化LambdaClient:
import { LambdaClient } from "@aws-sdk/client-lambda";

const client = new LambdaClient({
  region: 'us-east-1',
  credentials: {
    accessKeyId: import.meta.env.AWS_ACCESS_KEY_ID,
    secretAccessKey: import.meta.env.AWS_SECRET_ACCESS_KEY,
    sessionToken: import.meta.env.AWS_SESSION_TOKEN
  }
});

方案二:生产环境使用前端认证服务(推荐)

如果是生产环境的React应用,不要直接使用本地CLI凭证,建议通过AWS Cognito身份池或Amplify Auth实现用户认证,自动获取访问Lambda的临时凭证。这种方式更安全,符合AWS最佳实践。

补充说明

AWS SDK v3的凭证提供者分环境适配:

  • Node.js专属提供者:fromNodeProviderChain、fromIni、fromEnv等,仅在Node.js环境的包构建中存在
  • 跨环境提供者:fromCognitoIdentity、fromTemporaryCredentials等,支持浏览器和Node.js环境
    你能正常导入其他提供者,正是因为它们属于跨环境支持的类型。

内容的提问来源于stack exchange,提问作者meerkat_citronella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 13:42:52