vite预渲染 vite-plugin-prerender 大坑记录

文章讲述了在使用Vite和Vue3进行预渲染时遇到的TimeoutError和PageCrashed问题,以及打包后可能的404错误。作者建议在dist下创建额外的文件夹以解决预渲染问题,但这种方式可能导致不理想的URL结构。网络原因也被提及可能影响预渲染,而最佳解决方案是不需额外层级的打包方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文部分配置转自:vite预渲染怎么实现_猿耳盗铃的博客-CSDN博客

懒得重新写,贴下版本和自己踩的各种坑吧

以下为版本,本文只给vite vue3的建议,不一定适用,因为正常情况能build成功,我昨天中午之前一直没问题,能正常预渲染,中午之后到今天都是报错。

 

 下面为打包时遇到的问题:

[vite-plugin-prerender] Unable to prerender all routes!

源码里打印出来就是下面这俩:

TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded

puppeteer Error: Page crashed!

上述问题根据百度星星点点的修改方案,不适用,因为都是webpack的,vite版本的真的太少了

建议一:打包时候,dist下重新建一层文件夹,这样一般情况是可以预渲染成功(不过昨天也失败好多次)

 

build下outDir,vitePrerender下staticDir,base配置v3下, 路由配置v3下跳转。不然刷新404,

多一层访问的花,做seo很丑,www.xxx.com/v3 这种,让运维给配置下nginx吧。

上述多一层的方式虽然不完美,但是也可以讲究下。

 有说可能是网络原因导致的,具体不清楚,如果不加层级能正常打包是最好的。

### Vue3 和 Vite 项目的预渲染设置与配置 为了在基于 Vue3 和 Vite 的项目中实现预渲染,可以采用 `vite-plugin-ssr` 或者官方推荐的工具如 `vite-plugin-react-ssr` 改编版本来支持 Vue。然而更常见的做法是利用专门为此目的设计的库——例如 `vite-plugin-prerender`。 #### 安装依赖项 安装必要的插件以启用静态站点生成功能: ```bash npm install vite-plugin-prerender --save-dev ``` #### 修改 Vite 配置文件 编辑 `vite.config.js` 文件,在其中引入并配置该插件: ```javascript // vite.config.js import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import PrerenderSPAPlugin from 'vite-plugin-prerender' export default defineConfig({ plugins: [ vue(), new PrerenderSPAPlugin({ // 可选参数, 默认为 dist staticDir: path.join(__dirname, 'dist'), routes: ['/', '/about', '/contact'], // 要预先渲染的页面路径列表 renderer: new Renderer({ renderAfterTime: 5000, headless: true, onlyProduction: false }) }), ] }) ``` 此段代码定义了一个新的实例化对象给定了一系列要提前抓取并保存成 HTML 文档形式发布的 URL 地址[^1]。 #### 创建环境变量文件 按照最佳实践建议创建不同的 `.env.*` 文件用于区分不同部署阶段下的配置差异[^2]: - `.env`: 基础配置适用于任何情况; - `.env.development`: 开发模式下特有设定; - `.env.release`: 准备上线前测试期间使用的参数集; - `.env.production`: 生产环境中生效的各项属性值; 这些文件中的键值对会被自动读入到应用程序运行时上下文中作为全局常量访问。 通过上述步骤完成集成之后,当执行构建命令 (`npm run build`) 后会自动生成对应路由对应的静态HTML文件存放在指定目录内供后续分发使用。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值