博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue 预渲染 prerender-spa-plugin
阅读量:5069 次
发布时间:2019-06-12

本文共 2488 字,大约阅读时间需要 8 分钟。

最近项目上线要做运营,vue单页面做运营很不友好

一开始用的这个配置

const PrerenderSPAPlugin = require('prerender-spa-plugin') const Renderer = PrerenderSPAPlugin.PuppeteerRenderer const webpackConfig = merge(baseWebpackConfig, { plugins: [ // vue-cli生成的配置中就已有这个了,不要动 new HtmlWebpackPlugin({ filename: config.build.index, template: 'index.html', inject: true, minify: { removeComments: true, collapseWhitespace: true, removeAttributeQuotes: true }, chunksSortMode: 'dependency' }), // 在vue-cli生成的文件的基础上,只有下面这个才是我们要配置的 new PrerenderSPAPlugin({ // 生成文件的路径,也可以与webpakc打包的一致。 // 下面这句话非常重要!!! // 这个目录只能有一级,如果目录层次大于一级,在生成的时候不会有任何错误提示,在预渲染的时候只会卡着不动。 staticDir: path.join(__dirname, '../dist'), // 对应自己的路由文件,比如index有参数,就需要写成 /index/param1。 routes: ['/', '/index', '/skin', '/slimming', '/exercise', '/alPay', '/wxPay'], // 这个很重要,如果没有配置这段,也不会进行预编译 renderer: new Renderer({ inject: { foo: 'bar' }, headless: false, // 在 main.js 中 document.dispatchEvent(new Event('render-event')),两者的事件名称要对应上。 renderAfterDocumentEvent: 'render-event' }) }) ] }) 本地打包成功一半一半,线上jenkins打包总是报一个chromium下载失败
Failed to download Chromium
这个错误网上不少解决方案,都试了,没有最终解决问题 改了配置
new PrerenderSPAPlugin({
// 生成文件的路径,也可以与webpakc打包的一致。
// 下面这句话非常重要!!!
// 这个目录只能有一级,如果目录层次大于一级,在生成的时候不会有任何错误提示,在预渲染的时候只会卡着不动。
staticDir: path.join(__dirname, '../dist'),
 
// 对应自己的路由文件,比如a有参数,就需要写成 /a/param1。
routes: ['/'],
renderer: new PrerenderSPAPlugin.PuppeteerRenderer({//这样写renderAfterTime生效了
renderAfterTime: 5000
}),
这个配置也有问题,本地打包完全成功,jenkins打一个路由成功概率是一半一半,打两到三个路由失败概率大大提高,有的时候十一次成功一次,太夸张
 
最终的解决方案是
"prerender-spa-plugin": "^2.1.0",  prerender-spa-plugin降版本,从3版本降到了2版本,然后如下配置,jenkins打包也成功了
new PrerenderSPAPlugin(
// 生成文件的路径,也可以与webpakc打包的一致。
// 下面这句话非常重要!!!
// 这个目录只能有一级,如果目录层次大于一级,在生成的时候不会有任何错误提示,在预渲染的时候只会卡着不动。
//staticDir:
path.join(__dirname, '../dist'),
// 对应自己的路由文件,比如index有参数,就需要写成 /index/param1。
// routes: ['/', '/promotions/noised-optimized-rower-machine_32.html', '/product-detail/noised-optimized-rower-machine_16392658.html'],
['/', '/promotions/noised-optimized-rower-machine_32.html'],
// 这个很重要,如果没有配置这段,也不会进行预编译
/* renderer: new Renderer({
//routes:
['/','/promotions/noised-optimized-rower-machine_32.html'/* ,'/product-detail/noised-optimized-rower-machine_16392658.html' */
// routes: ['/'],
{
renderAfterTime: 5000,
//在一定时间后再捕获页面信息,使得页面数据信息加载完成
captureAfterTime: 50000,
//忽略打包错误
ignoreJSErrors: true,
phantomOptions: '--web-security=false',
maxAttempts: 10,
renderAfterDocumentEvent: 'render-event',
}
 
),
 
 

转载于:https://www.cnblogs.com/pingpingdejia/p/11412250.html

你可能感兴趣的文章
Objective - C基础: 第四天 - 10.SEL类型的基本认识
查看>>
Android TextView加上阴影效果
查看>>
《梦断代码》读书笔记(三)
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>
AngularJS学习篇(一)
查看>>
关于Xshell无法连接centos6.4的问题
查看>>
css3动画——基本准则
查看>>
输入月份和日期,得出是今年第几天
查看>>
pig自定义UDF
查看>>
spring security 11种过滤器介绍
查看>>
代码实现导航栏分割线
查看>>
大数据学习系列(8)-- WordCount+Block+Split+Shuffle+Map+Reduce技术详解
查看>>
【AS3代码】播放FLV视频流的三步骤!
查看>>
枚举的使用
查看>>
luogu4849 寻找宝藏 (cdq分治+dp)
查看>>
日志框架--(一)基础篇
查看>>
关于源程序到可运行程序的过程
查看>>
转载:mysql数据库密码忘记找回方法
查看>>
scratch少儿编程第一季——06、人在江湖混,没有背景怎么行。
查看>>
C# Async与Await的使用
查看>>