You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3+Vite使用vue-final-modal报错:未导出$vfm

解决vue-final-modal中“does not provide an export named '$vfm'”错误

错误原因

你尝试直接从vue-final-modal导入$vfm,但$vfm并非该库的导出成员——它是插件通过app.use()注入到Vue应用实例的全局属性,直接import会触发导出不存在的错误。

修复步骤

1. 使用官方推荐的组合式API获取$vfm

在<script setup>中,改用vue-final-modal提供的useVfm函数获取实例(推荐方式):

<template>
  <div>
    <AppButton :text="'Submit'" @click="submit()" />
  </div>
</template>

<script setup lang="ts">
import AppButton from '../components/custom/buttons/AppButton.vue';
import HistoryDialog from '../components/dialogs/HistoryDialog.vue';
import { useVfm } from 'vue-final-modal'; // 导入useVfm组合式函数

const $vfm = useVfm(); // 获取vfm实例

const submit = () => {
  $vfm.show(
    { component: HistoryDialog }, 
    { type: 'Case' } // 注意:原代码末尾多了个多余的'd',已删除
  );
};
</script>

2. 备选方案:通过getCurrentInstance获取全局属性

若不想使用useVfm,也可通过Vue的getCurrentInstance获取注入的全局属性:

<script setup lang="ts">
import { getCurrentInstance } from 'vue';
// ...其他导入代码

const appContext = getCurrentInstance()?.appContext;
const $vfm = appContext?.config.globalProperties.$vfm;

const submit = () => {
  $vfm?.show(
    { component: HistoryDialog }, 
    { type: 'Case' }
  );
};
</script>

3. 额外修复:代码笔误

原组件代码中{ type : 'Case' }d末尾多了一个d,这会导致语法错误,必须删除。

内容的提问来源于stack exchange,提问作者simpledev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 10:15:02