Vite+Vue2环境下如何正确动态导入Vue组件并避免TypeError错误?

Vite+Vue2环境下如何正确动态导入Vue组件并避免TypeError错误?

在vite 3与vue 2项目中动态加载vue组件,并解决typeerror: cannot add property _ctor, object is not extensible错误。本文重点讲解vue 2组件注册机制与vite异步组件加载的兼容性问题。

原方案尝试使用await import()结合Vue.component()注册组件,虽然实现了异步加载,但注册时却出现TypeError: Cannot add property _Ctor, object is not extensible错误。这并非路径问题,而是Vue.component()方法的限制。Vue.component()期望接收已构造的Vue组件构造函数,而await import()返回的是包含默认导出组件的模块对象,并非直接可用于Vue.component()

正确方法是直接使用await import()获取的模块对象的默认导出,将其赋值给组件的is属性,无需额外使用Vue.component()注册。import()导入的组件已包含Vue组件所需信息。

修改后的代码示例:

  
First name:

Last name:

测试
测试动态组件导入
import Vue from "vue";export default { data() { return { viewName: undefined, page_id_list: [] }; }, methods: { async testClick() { const { default: component } = await import(`../testComponent/sys/test2.vue`); this.viewName = component; // 直接使用导入的组件 this.page_id_list.push(component); // 假设需要在keep-alive中缓存组件 } }};

此代码中,await import()导入组件后,直接解构出default属性(Vue组件的默认导出),并赋值给viewName,用于组件的is属性。这避免了直接使用Vue.component()可能造成的错误,更符合Vue 2组件的使用方式。 注意,无需testImporttest2函数。

立即学习“前端免费学习笔记(深入)”;

此方法有效避免TypeError: Cannot add property _Ctor, object is not extensible错误,并在Vite+Vue2环境下灵活实现动态组件导入。关键在于理解await import()的返回值及Vue 2组件的注册和使用方式。

以上就是Vite+Vue2环境下如何正确动态导入Vue组件并避免TypeError错误?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1563515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月22日 08:22:59
下一篇 2025年12月22日 08:23:14

相关推荐

  • Vue中如何通过page_id精确清除keep-alive缓存的指定组件?

    在vue应用中,结合keep-alive和component组件构建可移除选项卡的管理页面,并动态清除指定组件缓存是常见需求。本文详解如何利用keep-alive的include属性,结合page_id精确控制组件缓存的清除。 问题在于:如何根据page_id清除keep-alive缓存中的特定组件…

    2025年12月22日
    000
  • Vue组件选项卡动态显示多个组件实例时,如何避免组件状态复用?

    vue组件与选项卡:动态显示多个组件实例并避免状态复用 本文介绍如何利用Vue的component标签和选项卡组件,动态渲染多个相同组件的实例,且每个实例拥有独立状态,互不干扰。我们将分析一个实际案例,并提供解决方案。 问题:组件状态复用 用户希望使用选项卡组件(例如el-radio-group)结…

    2025年12月22日
    000
  • 如何通过自定义指令实现ElementUI消息框的拖拽功能?

    ElementUI 消息框拖拽功能自定义指令实现详解 本文将详细介绍如何通过自定义指令,为elementui的el-message-box组件添加拖拽功能,解决产品需求中所有错误消息弹窗可拖拽的问题。现有代码中,错误消息弹窗通过this.$showalert.showerrormsg(errmsg)…

    2025年12月22日
    000
  • React应用中script标签相对路径为何变为绝对路径?

    react应用中script标签相对路径转换为绝对路径的解析 在构建React应用时,开发者可能会遇到script标签中的相对路径被浏览器解释为绝对路径的情况。例如,预期请求路径为http://app.xxx.com/application/main.js,但实际请求却变成了http://app.x…

    2025年12月22日
    000
  • Vue组件选项卡如何动态创建多个相同组件实例?

    利用vue组件和选项卡动态渲染多个组件实例 本文介绍如何使用Vue.js创建动态选项卡,并在每个选项卡中渲染同一个组件的不同实例,每个实例接收不同的参数。我们将分析一个实际案例并提供解决方案。 问题描述: 用户希望通过选项卡(例如,使用Element UI的el-radio-group)动态加载和显…

    2025年12月22日
    000
  • Vue组件中如何优雅地实现动态节点渲染?

    vue组件中优雅的动态节点渲染 在Vue.js开发中,灵活控制组件内容至关重要。本文剖析一段代码,它利用Vue的条件渲染和动态属性,实现了优雅的动态节点渲染。 核心代码: 其中,title是传入组件的prop属性。让我们分析其工作机制: 立即学习“前端免费学习笔记(深入)”; 首先,v-if=”ty…

    2025年12月22日
    000
  • PyQt5 TextBrowser超链接点击失效:如何解决中文及特殊字符路径问题?

    pyqt5 textbrowser超链接失效:巧妙解决中文及特殊字符路径问题 在PyQt5的TextBrowser中,如果超链接指向的路径包含中文或特殊字符,点击链接常常无法打开,报错“ShellExecute failed (error 2)”。这是因为ShellExecute函数在处理非ASCI…

    2025年12月22日
    000
  • 前端如何将后端返回的SVG图形编码显示?

    前端如何显示后端返回的svg图形编码? 在网页开发中,我们经常需要处理SVG图形。有时,SVG图形会以独立文件的形式引入,例如 ;但有些情况下,SVG图形是以编码形式嵌入HTML代码中的。本文将介绍如何将后端返回的SVG图形编码在前端显示。 下图展示了SVG编码嵌入的示例: 许多开发者会疑惑为何有些…

    好文分享 2025年12月22日
    000
  • 服务器端已安装字体,用户浏览器就能直接显示吗?有哪些替代方案?

    网页字体显示及优化策略 网页设计师经常会选择一些独特的字体来提升视觉效果,但服务器端是否安装了该字体并不意味着用户浏览器就能直接显示。本文将分析这个问题,并提供有效的解决方案。 核心问题: 服务器端已安装的特殊字体,用户浏览器能否直接显示?若不能,有哪些替代方案? 解答: 服务器端安装字体并不能保证…

    2025年12月22日
    000
  • 反复修改浮动元素的宽高,是否会触发浏览器重排?

    持续调整浮动图片元素的尺寸会造成浏览器重排吗? 众所周知,为图片添加浮动属性后,周围文本会环绕显示。但如果不断修改已设置浮动的图片的宽高,是否会引发浏览器频繁重排?这关系到浏览器渲染机制中的重排(Layout)和重绘(Paint)。 答案是肯定的。修改浮动元素的尺寸会影响页面布局,从而触发重排。这是…

    2025年12月22日 好文分享
    000
  • CSS relative定位居中:为什么总是失败?

    css相对定位居中:为何总是失败? 许多开发者在使用CSS布局时,会发现相对定位(relative)无法完美实现元素居中。本文通过一个案例分析,解释relative定位与绝对定位(absolute)、固定定位(fixed)的差异,揭示relative定位为何在某些情况下无法实现垂直居中。 我们来看一…

    2025年12月22日
    000
  • 页面刷新时onload事件何时触发?div元素能用onload事件吗?

    页面刷新与onload事件以及div元素的onload事件详解 本文分析onload事件在页面刷新时的执行时机,以及div元素是否支持onload事件。 onload事件仅在页面所有DOM元素和依赖资源(如样式表、图片)加载完成后触发。因此,页面刷新时,除非浏览器缓存了页面内容或使用了非强制刷新方式…

    2025年12月22日
    000
  • DIV的opacity属性为何无法影响其下方的IMG元素透明度?

    css opacity属性与图像透明度的冲突:一个案例分析 在网页开发中,opacity属性常用于控制元素透明度。然而,当应用于父元素时,其对子元素的影响并非总是预期的那样。本文将通过一个案例,分析opacity属性对嵌套图像元素的影响,并提供解决方案。 问题描述: 一个水平滚动视图包含多个图像,其…

    2025年12月22日 好文分享
    000
  • Vue 3 + Vite 项目中,.ts 文件缺失 .d.ts 类型声明文件如何解决?

    vue 3 + vite 项目:解决 .ts 文件缺少 .d.ts 类型声明文件的问题 在使用 Vue 3 和 Vite 开发项目时,你可能会遇到一个常见问题:你的 .ts 文件没有生成对应的 .d.ts 类型声明文件,导致在 .vue 文件中引入 .ts 文件时出现错误。本文将分析这个问题的原因并…

    2025年12月22日
    000
  • 反复修改浮动图片宽高会频繁触发浏览器重排吗?

    频繁调整浮动图片尺寸对浏览器渲染的影响 网页布局中,浮动图片常用于实现文本环绕效果。但反复修改浮动图片的宽高,是否会频繁触发浏览器重排,影响页面性能呢?答案是肯定的,但影响程度取决于具体情况。 浏览器渲染机制决定了修改浮动元素的尺寸会影响其在文档流中的位置和大小。由于浮动元素影响周围元素布局,尺寸改…

    2025年12月22日
    000
  • 如何在Vuex中访问Vue路由的元数据?

    在vue应用中访问路由元数据:vuex与路由信息的结合 在开发Vue.js应用时,常常需要在Vuex store等JavaScript文件中获取当前路由信息,例如路由元数据(meta)。本文将演示如何在Vuex中便捷地访问这些元数据。 问题:如何有效获取当前路由的meta信息并在Vuex中使用? 解…

    2025年12月22日
    000
  • XML配置文件报错,程序运行正常却登录失败怎么办?

    xml文件报错但程序运行正常,登录后却出现后台错误 在开发过程中,我们经常会遇到这样的问题:XML配置文件虽然有标红报错,但程序却能正常运行,然而在访问特定功能,例如登录时,却抛出异常。本文将针对一个案例,分析XML文件报错与运行时NullPointerException异常之间的关联,并给出解决方…

    好文分享 2025年12月22日
    000
  • 前端如何以编码形式显示后端返回的SVG图像?

    前端如何显示后端返回的svg编码? 许多网站为了优化性能和方便管理,选择将SVG图像以编码形式嵌入HTML,而非直接引用外部文件。这种方法避免了额外的HTTP请求,提高了页面加载速度,也便于修改和控制SVG内容。 那么,如何将后端提供的SVG数据,以编码形式在前端展示呢? 关键在于将后端返回的SVG…

    2025年12月22日
    000
  • 前端如何将后端返回的SVG链接转换为编码并在页面显示?

    前端svg图像的编码显示及后端svg链接转换方法 许多网站为了优化页面加载速度,会将SVG图像转换为编码嵌入HTML中,而不是直接使用 以下代码片段演示了这一过程: fetch(‘https://static.segmentfault.com/main_site_next/614d2165/_nex…

    2025年12月22日
    000
  • 浏览器究竟渲染的是什么:HTML、CSS,还是JavaScript的动态产物?

    浏览器渲染页面的本质是什么? 学习前端开发的过程中,一个常见疑问是:无论使用JavaScript、Vue、React还是其他框架,浏览器最终呈现的页面,是不是仅仅是HTML和CSS的简单组合?这些框架和技术,只是改变了HTML代码的生成方式吗? 答案并非绝对。虽然最终显示在浏览器上的确是HTML、C…

    2025年12月22日
    000

发表回复

登录后才能评论
关注微信