前提:一不小心搭建了vue3项目,vue-pdf最新版本为4.2.0,不是针对vue3构建的
问题1:TypeError: h is not a function
原因:h在vue3的render函数中不再以参数形式出现,需要手动导入
解决:
- 将vue-pdf中的
render: function (h)
替换为render: function ()
,然后手动导入import { h } from 'vue'
- 在vue-pdf的依赖vue-resize-sensor中同样将
render: function(create)
替换为render: function()
,然后手动导入import { h as create } from 'vue'
问题2:ReferenceError: $emit is not defined
解决:
npm install vue-happy-bus --save
,然后手动导入import { $on, $emit } from 'vue-happy-bus'
- .
this.$on
替换为$on
,this.$emit
替换为$emit
问题3:修改了vue-pdf和vue-resize-sensor中的源码如何上传到自己的项目
解决:
npm install patch-package --save-dev
,npx patch-package vue-pdf
npx patch-package vue-resize-sensor
- 修改package.json
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"postinstall": "patch-package"//增加这个命令
},
遗留问题:对于vue-pdf中的生命周期钩子函数不知道怎么处理,将destroyed替换为unmounted,destroy()替换为unmount()之后仍然报错,暂时注释了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。