使用PrimeVue的ConfirmDialog出现injection "Symbol()" not found报错如何解决
报错原因
该警告是PrimeVue的ConfirmService未正确注册导致的:confirm.require依赖Vue的注入机制获取服务实例,未注册服务时就会找不到对应的注入标识抛出该警告。
修复步骤
- 第一步:在项目入口文件(通常为
main.js/main.ts)中注册ConfirmService
import { createApp } from 'vue' import PrimeVue from 'primevue/config' import ConfirmationService from 'primevue/confirmationservice' import App from './App.vue' const app = createApp(App) app.use(PrimeVue) // 新增注册确认服务 app.use(ConfirmationService) app.mount('#app')
- 第二步:在调用确认弹窗的组件中正确获取confirm实例,组合式API写法如下:
import { useConfirm } from "primevue/useconfirm"; const confirm = useConfirm() // 你原有写的deleteCategory方法不需要做任何修改
- 如果你使用的是选项式API,按如下方式注入即可:
export default { inject: ['confirm'], methods: { deleteCategory() { this.confirm.require({ // 沿用你原有的配置即可 }) } } }
注意事项
如果完成上述操作后仍报错,检查你项目安装的PrimeVue版本是否为3.x及以上,旧版本的API调用方式存在差异。
内容的提问来源于stack exchange,提问作者Hieu Le
相关产品推荐
相关产品推荐

