You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 13.5.4服务器动作中使用react-pdf生成PDF报错求助

问题原因及解决方法

这个错误是因为@react-pdf/renderer与Next.js服务器动作的运行环境不兼容,或是React实例未被正确识别导致的。以下是具体修复步骤:

1. 强制使用Node.js Runtime

Next.js服务器动作默认可能使用Edge Runtime,而@react-pdf/renderer依赖Node.js环境的API,不支持Edge环境。在服务器动作文件顶部添加代码强制指定运行环境:

"use server";
export const runtime = 'nodejs'; // 新增该行
import React from "react";
import { Page, Text, Document, renderToBuffer } from "@react-pdf/renderer";

// 其余代码保持不变
const MyDocument = () => (
  <Document>
    <Page>
      <Text>React-pdf</Text>
    </Page>
  </Document>
);

export const createPdf = async () => {
  await renderToBuffer(<MyDocument />);
};

2. 确保文件扩展名正确

服务器动作文件必须使用.jsx或.tsx扩展名,这样Next.js才能正确编译JSX语法。如果你的文件是.js,请改为.jsx。

3. 修复客户端组件语法错误

你提供的客户端组件代码存在语法错误,多余的冒号需要删除:

const onSubmit = async (data) => {
  await createPdf();
};

4. 验证依赖兼容性(可选)

如果上述步骤无效,可删除现有依赖文件重新安装,确保@react-pdf/renderer与React 18.2.0(Next.js 13.5.4对应版本)兼容:

rm -rf node_modules package-lock.json
npm install

内容的提问来源于stack exchange,提问作者user3357926

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:52:17