我正在使用Next.js 13和App Router。
当我尝试将一个只支持服务器的fetch函数导入到 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不允许将服务器专用函数导入中间件?
1条答案
按热度按时间gmxoilav1#
这个问题在v13.4.20-canary.39中得到了解决。您只需要安装最新版本。
相关讨论:middleware.ts treated as a client side component。