如何在 Next.js 中间件中使用仅服务器功能?

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

我正在将 Next.js 13 与 App Router 结合使用。

当尝试将仅服务器获取函数导入到 middleware.js 时,我收到以下错误消息:

错误:无法从客户端组件模块导入此模块。 它只能从服务器组件中使用。发生了这个错误 生成页面时。任何控制台日志都将显示在 终端窗口。

这看起来很奇怪,因为中间件是在服务器上执行的,导入的函数也是如此。

中间件.js:

import { getClientData } from "@lib/getClientData";

export default async function middleware(req) { ... }

getClientData.js:

import "server-only";

export const getClientData = async () => {
  const data = await ....
};

为什么 Next 不允许将仅服务器功能导入到中间件中?

javascript next.js middleware
1个回答
0
投票

此问题已在 v13.4.20-canary.38 中修复。您只需安装最新版本即可。
相关讨论:middleware.ts 被视为客户端组件

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