Nuxt Supabase Как решить ошибку 500 «client.from is not a function»?
Пишу приложение на Nuxt. Не могу вывести список юзеров с таблицы users в Supabase. Появляется ошибка 500
"client.from is not a function"
(P.s я юзаю модуль @nuxtjs/supabase)
/server/api/users.ts
import { serverSupabaseClient } from '#supabase/server' export default eventHandler(async (event) => { const client = serverSupabaseClient(event) const { data } = await client.from('users').select("*") return { users: data } }) |
import { serverSupabaseClient } from '#supabase/server' export default eventHandler(async (event) => { const client = serverSupabaseClient(event) const { data } = await client.from('users').select("*") return { users: data } })
package.json
{ "name": "online-shop", "private": true, "type": "module", "scripts": { "build": "nuxt build", "dev": "nuxt dev", "generate": "nuxt generate", "preview": "nuxt preview", "postinstall": "nuxt prepare" }, "dependencies": { "@nuxtjs/supabase": "^1.2.0", "@supabase/supabase-js": "^2.41.1", "nuxt": "^3.11.1", "vue": "^3.4.21", "vue-router": "^4.3.0" } } |
{ "name": "online-shop", "private": true, "type": "module", "scripts": { "build": "nuxt build", "dev": "nuxt dev", "generate": "nuxt generate", "preview": "nuxt preview", "postinstall": "nuxt prepare" }, "dependencies": { "@nuxtjs/supabase": "^1.2.0", "@supabase/supabase-js": "^2.41.1", "nuxt": "^3.11.1", "vue": "^3.4.21", "vue-router": "^4.3.0" } }
nuxt.config.ts
import { name } from './package.json' export default defineNuxtConfig({ devtools: { enabled: true }, modules: ['@nuxtjs/supabase'], supabase: { redirect: false }, app: { head: { title: name, link: [ { rel: 'stylesheet', href: 'https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css', integrity: "sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC", crossorigin: "anonymous" }, ] }, }, }) |
import { name } from './package.json' export default defineNuxtConfig({ devtools: { enabled: true }, modules: ['@nuxtjs/supabase'], supabase: { redirect: false }, app: { head: { title: name, link: [ { rel: 'stylesheet', href: 'https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css', integrity: "sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC", crossorigin: "anonymous" }, ] }, }, })
.env
SUPABASE_URL="<supabase_url>" SUPABASE_KEY="<supabase_key>" |
SUPABASE_URL="<supabase_url>" SUPABASE_KEY="<supabase_key>"
Помогите, пожалуйста.
Дополнительно:
serverSupabaseClient возвращает Promise, нужно добавить await
import { serverSupabaseClient } from '#supabase/server' export default eventHandler(async (event) => { const client = await serverSupabaseClient(event) const { data } = await client.from('users').select("*") return { users: data } }) |
import { serverSupabaseClient } from '#supabase/server' export default eventHandler(async (event) => { const client = await serverSupabaseClient(event) const { data } = await client.from('users').select("*") return { users: data } })
- ошибка пропала, но вот данные с базы не выводятся
{ "users": [] }
{ "users": [] }
- хоть таблица в базе есть. и данные в ней тоже заполнены
- pshavlenkov, точно не подскажу, но вроде проблема может быть в RLS, которые по-умолчанию включены. Этот механизм позволяет ограничивать доступ на операции с таблицами по некоторым правилам, например разрешать доступ только аутентифицированным пользователям. Попробуйте либо отключить его для ваших таблиц, либо настроить правила
-
Проблема решена! Нужно было действительно выключить RLS. Спасибо!
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос


Для решения ошибки "client.from is not a function" при использовании Nuxt с Supabase, необходимо убедиться, что вы правильно настроили Supabase и правильно используете его методы.
Во-первых, убедитесь, что вы правильно установили и настроили Supabase в вашем проекте Nuxt. Для этого вы должны импортировать Supabase и создать экземпляр SupabaseClient в вашем файле, где вы будете использовать Supabase. Например:
import { createClient } from '@supabase/supabase-js' const supabaseUrl = 'YOUR_SUPABASE_URL' const supabaseKey = 'YOUR_SUPABASE_KEY' export const supabase = createClient(supabaseUrl, supabaseKey)
Убедитесь, что вы правильно передали URL и ключ Supabase в createClient.
Затем, когда вы используете Supabase в своем коде, убедитесь, что вы вызываете методы правильно. Например, если вы хотите выполнить запрос к базе данных, используйте метод .from('table_name'):
const { data, error } = await supabase.from('table_name').select('*')
Если вы продолжаете получать ошибку "client.from is not a function", убедитесь, что вы правильно импортировали и создали экземпляр SupabaseClient, и что вы используете методы Supabase правильно.
Также, убедитесь, что у вас установлены все зависимости и пакеты Supabase, и что ваш сервер Supabase работает корректно.
Если после всех этих шагов ошибка все еще возникает, попробуйте обновить версии Supabase и Nuxt до последних доступных.
Надеюсь, эти рекомендации помогут вам решить проблему с ошибкой "client.from is not a function" при использовании Nuxt с Supabase.