前提:一不小心搭建了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-happy-bus报错Vue is not a constructor
https://segmentfault.com/a/1190000039858927
根据你提供的问题,我可以为你提供一些可能的解决方案。
问题1:TypeError: h is not a function
在Vue 3中,h
函数不再作为参数传递给渲染函数。你需要手动导入它。
解决方案:
render: function (h)
为render: function ()
。import { h } from 'vue'
。render: function(create)
替换为render: function()
。import { h as create } from 'vue'
。问题2:ReferenceError: $emit is not defined
解决方案:
npm install vue-happy-bus --save
来安装vue-happy-bus。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
来安装patch-package。npx patch-package vue-pdf
来为vue-pdf创建补丁。npx patch-package vue-resize-sensor
来为vue-resize-sensor创建补丁。package.json
文件,添加一个新的命令"postinstall": "patch-package"
,这将使得补丁在项目安装完成后自动应用。遗留问题:引入vue-happy-bus报错Vue is not a constructor
这个问题可能是由于在执行某行代码时,Vue的构造函数尚未准备好或者被正确地引用。可能的原因有很多,包括但不限于脚本加载顺序问题、Vue版本不兼容等。为了解决这个问题,你可以尝试以下步骤:
确保Vue库正确引入并初始化。你可以通过在你的代码中添加一个引用到Vue的声明或简单的初始化Vue实例的代码来检查这一点。例如:
import { createApp } from 'vue';const app = createApp({}); // 创建一个新的Vue应用实例app.component('my-component', { /*...*/ }); // 注册一个全局组件(可选)app.mount('#app'); // 挂载应用到id为'app'的DOM元素(可选)
npm update
或yarn upgrade
来更新你的依赖项。vue 项目打包报错? 应该怎么调整? package.json
let res = await $http.get("api.cart") 在$http上报了 $http is undefined的错误不知道怎么回事 看了网上说好多是没有配置jquery?配置了也还是没有搞好
各位麻烦看看是否遇到过这样的报错: 排查了好久实在没有找到哪儿出了问题,时不时弹出来,编译结果又是正常的,尝试排查了好久但是一直没有办法排查出来,有遇到过这种报错的同学吗?或者有没有同学提供一种排查思路,因为我真的搞懵逼了。哈哈哈。 另外,Vue devtools经常崩溃卡顿,数据不会自动更新什么的,有什么办法处理不?有没有替代办法?
vue3、vite项目本地运行正常,打包报一堆错,应该是type-check的报错,应该怎么解决? 无