_index.default 未定义 - Supabase 教程中的 Expo 应用程序在网络上抛出错误

问题描述 投票:0回答:1

描述

严格遵循supabase文档中的使用Expo React Native构建用户管理应用程序教程并运行该应用程序的网络版本后,我遇到了以下错误消息:

Uncaught TypeError: _index.default is undefined
在 Firefox 中

Chrome 中的

Uncaught TypeError: Cannot destructure property 'PostgrestClient' of '_index.default' as it is undefined.

这种情况仅发生在网络版本中。当我在 Android 上的 Expo Go 中运行该应用程序时,它运行得非常好。 我尝试调试代码并将其范围缩小到单个导入语句

import { createClient } from "@supabase/supabase-js";

只有当这条导入语句被注释掉时,错误才会消失。

重现

  1. 按照supabase教程进行操作这里
  2. 安装网络依赖项:
    npx expo install react-dom react-native-web @expo/metro-runtime
  3. 在控制台中运行
    npm start
    并在浏览器中打开本地主机 URL。
  4. 打开控制台并查看错误。

如果您希望应用程序加载时不出现错误,请继续执行以下操作:

  1. 注释掉supabase.js中的createClient导入语句和导出语句。将导出语句替换为 createClient 以外的内容。你的supabase.js应该看起来像这样:
import AsyncStorage from "@react-native-async-storage/async-storage";
// import { createClient } from "@supabase/supabase-js";

const supabaseUrl = "...";
const supabaseAnonKey = "...";

// export const supabase = createClient(supabaseUrl, supabaseAnonKey, {
//   auth: {
//     storage: AsyncStorage,
//     autoRefreshToken: true,
//     persistSession: true,
//     detectSessionInUrl: false,
//   },
// });

export const supabase = "hello world";
  1. 注释掉App.tsx中的useEffect语句:
export default function App() {
  const [session, setSession] = useState<Session | null>(null);
  // useEffect(() => {
  //   supabase.auth.getSession().then(({ data: { session } }) => {
  //     setSession(session);
  //   });
  //   supabase.auth.onAuthStateChange((_event, session) => {
  //     setSession(session);
  //   });
  // }, []);
  return (
    <View>
      {session && session.user ? (
        <Account key={session.user.id} session={session} />
      ) : (
        <Auth />
      )}
    </View>
  );
}
  1. 查看已加载的帐户页面,没有错误

预期行为

完全加载网页,不会出现

Uncaught TypeError: _index.default is undefined
错误消息。

系统信息

  • 操作系统:Windows 11
  • 浏览器 Firefox 和 Chrome
  • @supabase/supabase-js 版本:2.44.2
  • Node.js 版本:20.14.0
  • 博览会版本:51.0.17

其他背景

两天前,我只发现一位不和谐的用户提到了此错误这里

我已经开始了 github 问题这里

react-native expo supabase expo-go
1个回答
0
投票

该问题是由于 supabase 中的错误造成的。在修复之前,您可以通过安装和使用旧版本的 @supabase/supabase-js 来解决此问题。 在终端中运行以下命令来安装工作版本:

npm install @supabase/[email protected]

检查您的 package.json 是否引用了此版本。它应该看起来像这样:

"@supabase/supabase-js": "^2.43.5",

感谢阿莱斯特找到了这个解决办法。请参阅原始消息此处

© www.soinside.com 2019 - 2024. All rights reserved.