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

跟随AWS Amplify教程时'signOut'未导出错误的解决问询

解决Amplify React教程中signOut未定义/未导出的问题

直接解决方法

  • 方法1:从@aws-amplify/auth导入signOut
    Auth核心方法都集中在这个包,这是最通用的解决方案:
    // 在src/App.js顶部添加导入语句
    import { signOut } from '@aws-amplify/auth';
    
    // 在组件内调用,比如绑定到按钮点击事件
    <button onClick={signOut}>Sign Out</button>
    
  • 方法2:使用UI React的useAuthenticator钩子(适用于新版Amplify UI)
    如果项目使用了Amplify UI的Authenticator组件,推荐通过钩子获取signOut,无需单独导入auth包:
    import { useAuthenticator } from '@aws-amplify/ui-react';
    
    // 在组件内部解构获取方法
    const { signOut } = useAuthenticator();
    
    // 调用方式同上
    <button onClick={signOut}>Sign Out</button>
    
  • 方法3:匹配教程依赖版本
    若上述方法无效,说明你的Amplify版本和教程不匹配。查看教程标注的依赖版本,执行对应安装命令:
    # 示例:安装教程指定的v5版本依赖
    npm install aws-amplify@5 @aws-amplify/ui-react@4
    

调试此类问题的思路

  • 核对官方文档:优先查看Amplify Auth和UI React的官方文档,确认API导入方式——教程可能存在版本滞后,官方文档信息是最新的。
  • 检查包的实际导出:在代码中临时添加日志,查看包的导出内容,确认signOut是否存在:
    // 打印ui-react包的所有导出
    console.log('UI React exports:', require('@aws-amplify/ui-react'));
    // 打印auth包的所有导出
    console.log('Auth exports:', require('@aws-amplify/auth'));
    
  • 排查代码上下文:确认是否在Authenticator组件的包裹范围内使用signOut——部分旧版UI组件会通过props将signOut传递给子组件,无需手动导入。
  • 查看依赖版本:执行npm list @aws-amplify/auth @aws-amplify/ui-react,检查当前安装版本,若与教程差异较大,考虑降级或升级到匹配版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:14:54