You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/chrome-linux/chrome: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
Vue预渲染插件prerender-spa-plugin使用全记录
服务器端渲染 vs 预渲染 (SSR vs Prerendering)
预渲染页面方式由于不需要web服务器的参与,设置比SSR更简单,特别适合用来展示一些静态页面,比如根据页面UI来自动生成骨架屏。
安装
npm install prerender-spa-plugin --save-dev
prerender-spa-plugin本身的安装非常简单,但是它所依赖的 puppeteer 却有可能让你吃苦头。由于网络原因,直接从npm安装puppeteer有可能会失败,解决办法网络上有很多,最简单就是设置淘宝的镜像源
npm config set registry https://registry.npm.taobao.org
。puppeteer的介绍可以参考之前的文章 Puppeteer入门简介
验证puppeteer
顺利安装完prerender-spa-plugin后,提前在环境中验证 puppeteer能让你少走点弯路。这点可能在自己开发用的电脑上不明显,但是在部署环境中就有可能踩坑。
本文用了一个简单的node脚本来验证puppeteer,如果成功生成了百度的截屏baidu.png,预渲染插件的使用就成功一大半了。
在 CentOS 7.2 环境中验证就遇到了缺少了依赖库的错误。
按照 TROUBLESHOOTING 的提示 安装相应的依赖库
如果在上述依赖库的安装过程还遇到类似以下报错
那么先可以删除报错的依赖库再安装
预渲染配置
prerender-spa-plugin的用法在官方文档有着很详细的说明,这里挑几个主要的配置项说下。(如果webpack中有用到 html-webpack-plugin 插件,一般是在此之后再配置 prerender-spa-plugin)
配置了
renderAfterDocumentEvent: 'render-event'
时,vue组件需要进行相应的修改踩坑
经过上面的步骤,prerender-spa-plugin插件的配置算是完成了,但并不代表就一切顺利,下面就记录几个遇到的问题。
1、渲染的页面成功生成,但是页面运行后却是静态页面,相应的 js 不起作用
这个问题是 Vue主组件模板也需要设置跟
el
配置项一样的id
。2、编译过程中一直卡死
这个问题一般是渲染的页面出错或者请求的 css/js 文件没有正常加载,导致没有触发
renderAfterDocumentEvent
配置的事件名。curl
命令)。参考
The text was updated successfully, but these errors were encountered: