TS Vue项目使用v-video-embed出现_c未定义及类型声明错误求助
问题解决方案
错误1根因
_c是Vue 2.x专属的内部渲染函数别名,该报错出现的核心原因是v-video-embed组件仅适配Vue 2.x,与你项目的Vue版本不兼容,或组件注册时机错误。
分场景解决方法
若你的项目使用Vue 3.x
有两种可行方案:
- 方案1:换用适配Vue 3的同类型视频嵌入组件,无需额外兼容成本
- 方案2:手动修改组件适配Vue 3:
- 将
v-video-embed的源码拷贝到你项目的组件目录下,替换所有代码中this._c调用为Vue 3的h渲染函数 - 调整组件导出格式为Vue 3插件规范:
import type { App } from 'vue' import AdjustedVideoEmbed from './调整后的组件文件路径' export default { install(app: App) { app.component('VideoEmbed', AdjustedVideoEmbed) } }- 在入口文件中按Vue 3的方式注册:
import { createApp } from 'vue' import App from './App.vue' import Embed from './调整后的插件导出文件路径' const app = createApp(App) app.use(Embed) app.mount('#app') - 将
若你的项目使用Vue 2.x
检查两个配置即可:
- 必须在
new Vue()实例化之前执行Vue.use(Embed),不能在实例创建完成后再注册组件 - 确认项目引入的是包含编译器的Vue完整版本,不能仅使用运行时版本,该组件依赖模板编译能力
类型声明优化
你已经手动添加的declare module 'v-video-embed';可以解决类型报错,若需要更完善的类型提示,可以补充声明内容:
// Vue 2 项目补充声明 declare module 'v-video-embed' { import type { PluginObject } from 'vue' const Embed: PluginObject<any> export default Embed }
内容的提问来源于stack exchange,提问作者Muhammad Islam
相关产品推荐
相关产品推荐

