[Vue warn]:属性“$primevue”在渲染期间被访问,但未在实例上定义

Ste*_*ert 2 vue.js primevue vuejs3

案例与问题

\n

I\xc2\xb4m 在一个私人项目上工作,并且Vue.js出现以下错误,当 I\xc2\xb4m 尝试使用以下FileUpload组件时会发生此错误PrimeVue

\n
[Vue warn]: Property "$primevue" was accessed during render but is not defined on instance.\n
Run Code Online (Sandbox Code Playgroud)\n

尝试使用FileUpload

\n
[Vue warn]: Property "$primevue" was accessed during render but is not defined on instance.\n
Run Code Online (Sandbox Code Playgroud)\n

该错误仅在我尝试使用时发生FileUpload,如果删除它,该组件就会工作。FileUpload并按PrimeVue应有的方式进口main.js

\n
<template>\n  <FileUpload name="demo[]" url="" @upload="onUpload" :multiple="true" :maxFileSize="1000000">\n    <template #empty>\n      <p>Drag and drop files to here to upload.</p>\n    </template>\n  </FileUpload>\n</template>\n
Run Code Online (Sandbox Code Playgroud)\n

到目前为止我尝试过的

\n

我搜索了这个问题,但与此错误唯一完全匹配的是 GitHub 上关于该Calendar组件的一个旧的已关闭问题:Issue #808。此问题中的错误是由于新的PrimeVue API. 这不应该是我的情况,因为它是在 V3.1 中引入的,而 I\xc2\xb4m 使用 V3.7。

\n

如果版本是问题PrimeVue,我测试了不同版本的 3.1、3.2、3.3,但错误仍然显示。这就是为什么实际的依赖项仍然是最新的:

\n
"primevue": "^3.7.0"\n
Run Code Online (Sandbox Code Playgroud)\n

也许在 SO 或 Google 上已经有一个解决方案,但要么我的英语太难理解,要么我\xc2\xb4m 仍然不熟悉Vue.js这个问题。

\n

提前致谢!

\n

ton*_*y19 6

您的用法app.use()不正确:

app.use(
    router,
    PrimeVue,
    PrimeIcons,
    store
)
Run Code Online (Sandbox Code Playgroud)

app.use()仅需要两个参数:

  • 第一个参数: Vue 插件
  • 第二个参数:插件选项

另外,PrimeIcons它不是插件,因此不应传递给app.use().

解决方案

将每个插件单独传递给app.use()

app.use(router)
   .use(PrimeVue)
   //.use(PrimeIcons)   // not a plugin
   .use(store)
Run Code Online (Sandbox Code Playgroud)