_index.default не определен — приложение Expo из учебника Supabase выдает ошибку в Интернете

Редактировать

Теперь эта ошибка исправлена!

Описание

После строгого следования руководству Создание приложения для управления пользователями с помощью Expo React Native в документации супабазы ​​и запуска веб-версии приложения я столкнулся со следующим сообщением об ошибке:

Uncaught TypeError: _index.default is undefined в Firefox

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

Это произошло только с веб-версией. Когда я запустил приложение в Expo Go на Android, оно работало отлично. Я попытался отладить код и сузил его до одного оператора импорта.

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

Только когда этот оператор импорта закомментирован, ошибка исчезает.

Воспроизводить

  1. Следуйте инструкциям по супабазе здесь
  2. Установите веб-зависимости: npx expo install react-dom react-native-web @expo/metro-runtime
  3. Запустите npm start в консоли и откройте URL-адрес локального хоста в браузере.
  4. Откройте консоль и просмотрите ошибку.

Если вы хотите, чтобы приложение загружалось без ошибок, выполните следующие действия:

  1. закомментируйте оператор импорта createClient и оператор экспорта в supabase.js. Замените оператор экспорта чем-то другим, кроме 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. закомментируйте оператор useEffect в App.tsx:
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

Дополнительный контекст

Я нашел еще одно упоминание об этой ошибке от пользователя Discord два дня назад здесь

Я начал выпуск GitHub здесь

Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
0
0
193
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема связана с ошибкой в ​​супабазе. Пока проблема не будет исправлена, вы можете обойти ее, установив и используя более старую версию @supabase/supabase-js. Запустите в терминале следующую команду, чтобы установить рабочую версию:

npm install @supabase/[email protected]

Проверьте, что ваш package.json ссылается на эту версию. Это должно выглядеть примерно так:

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

Спасибо Алистеру за то, что нашли обходной путь. Исходное сообщение смотрите здесь

Другие вопросы по теме