我目前正在学习 Next.js 13,并尝试从 PocketBase 数据库中获取数据以显示在表格中。我创建了一个连接到数据库并检索数据的 API 路由。但是,我在服务器组件中获取此数据时遇到问题。
这是我的项目的结构:
app/
api/
ingresos/
route.ts
components/
tablaIngresosCliente.tsx
ingresos/
page.tsx
...
Run Code Online (Sandbox Code Playgroud)
在 中route.ts,我连接到 PocketBase 数据库并获取数据:
app/
api/
ingresos/
route.ts
components/
tablaIngresosCliente.tsx
ingresos/
page.tsx
...
Run Code Online (Sandbox Code Playgroud)
在 中tablaIngresosCliente.tsx,我尝试从 API 路径获取数据:
// app/api/ingresos/route.ts
import { NextResponse } from 'next/server';
import PocketBase from 'pocketbase';
export async function GET(request: Request) {
const pb = new PocketBase('http://127.0.0.1:8090');
try {
const records = await pb.collection('ingresos').getFullList({
sort: '-created',
});
return NextResponse.json(records);
} catch (error) {
console.error(error)
return new …Run Code Online (Sandbox Code Playgroud) layout.tsx我正在尝试在Next.js 13 的目录中使用app以使所有页面上都存在导航布局。我设法做到了,当用户注销/登录时,导航栏会发生变化,但问题是我必须刷新页面(F5)才能看到导航栏上的更改。我认为这个问题与缓存有关,这就是我尝试使用export const dynamic = 'force-dynamic'.
我还将客户端组件添加到服务器组件中,因为我认为这会是问题所在,但它并没有解决问题。我想用它export const dynamic = 'force-dynamic'来处理缓存,但现在我遇到了一个似乎无法解决的错误。我收到的错误消息是:
Only async functions are allowed to be exported in a "use server" file.
Run Code Online (Sandbox Code Playgroud)
这是详细的错误跟踪:
./app/components/ClientInsideServerLayout.tsx
Error:
x Only async functions are allowed to be exported in a "use server" file.
,-[C:\Users\zantl\OneDrive\Documentos\GitHub\sssss\gestion-gastos-supabase\app\components\ClientInsideServerLayout.tsx:2:1]
2 |
3 | import { getSessionStatus } from "../ServerActions/isUserLoggedIn";
4 | import ClientLayout from "./ClientLayout"
5 | export const dynamic = 'force-dynamic'
: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6 |
7 | …Run Code Online (Sandbox Code Playgroud)