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

使用try/catch与async/await仍出现Appwrite未授权控制台错误

问题原因与解决方案

为什么catch块没拦截到错误,控制台仍出现未授权提示?

  1. Appwrite SDK自带日志输出:account.get()在未授权时,Appwrite的SDK会在底层主动将错误日志打印到控制台,这个日志不属于你代码中try/catch捕获的异常输出,所以即使你捕获了异常,SDK自身的日志还是会显示。
  2. getCurrentUser未向上层抛出异常:你的getCurrentUser函数在catch块中返回了null,没有重新抛出错误,因此handleClick中的catch块不会被触发——因为getCurrentUser没有抛出异常,而是正常返回了null。

解决方法

1. 关闭Appwrite SDK的自带日志

在初始化Appwrite客户端时,通过设置日志级别来屏蔽SDK自身的错误输出:

import { Client, Account, LogLevel } from "appwrite";

const client = new Client()
  .setEndpoint('你的Appwrite端点')
  .setProject('你的项目ID')
  .setLogLevel(LogLevel.NONE); // 完全关闭SDK日志,也可根据需求选LogLevel.ERROR只保留错误级日志

const account = new Account(client);

2. 调整代码逻辑(按需选择)

  • 只保留自定义日志提示:如果不需要上层handleClick处理异常,保持现有逻辑即可,关闭SDK日志后控制台只会显示你catch中的提示:
export async function getCurrentUser() {
  try {
    const user = await account.get();
    return user;
  } catch (err) {
    console.log("no user found : ", err.message || err);
    return null;
  }
}
  • 让上层handleClick捕获异常:如果需要handleClick的catch块也能处理错误,可在getCurrentUser的catch中重新抛出异常:
export async function getCurrentUser() {
  try {
    const user = await account.get();
    return user;
  } catch (err) {
    console.log("no user found : ", err.message || err);
    throw err; // 抛出错误,让上层catch捕获
  }
}

3. 用useEffect检查会话并更新状态

按照你的需求,可通过useEffect在组件加载时自动检查用户会话:

import { useState, useEffect } from 'react';

function YourComponent() {
  const [currentUser, setCurrentUser] = useState(null);

  useEffect(() => {
    const checkUserSession = async () => {
      const user = await getCurrentUser();
      setCurrentUser(user);
    };
    checkUserSession();
  }, []);

  // 后续可根据currentUser状态渲染对应UI
  return (
    <div>
      {currentUser ? <p>当前用户:{currentUser.name}</p> : <p>未登录</p>}
      <button onClick={handleClick}>检查用户</button>
    </div>
  );
}

内容的提问来源于stack exchange,提问作者Pratik Kumar Patra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:22:35