Vue-meta:无法设置未定义的属性“$meta”

Posted

技术标签:

【中文标题】Vue-meta:无法设置未定义的属性“$meta”【英文标题】:Vue-meta: Cannot set property '$meta' of undefined 【发布时间】:2021-01-16 15:50:11 【问题描述】:

安装vue-meta后,我的浏览器控制台报错。

为什么会出现这个错误?是我的代码还是错误?我正在使用vue-meta@2.4.0 和 Vue 3。

main.js

createApp(App)
  .use(router)
  .use(VueMeta)
  .mount("#app");

App.vue

<template>
  <div>
    <router-view></router-view>
  </div>
</template>

<script>
import Header from "./components/Header.vue";

export default 
  components: 
    "app-header": Header,
  ,
;
</script>

首页.vue

export default 
  name: "Home",
  metaInfo() 
    return 
      title: "test meta data with vue",
      meta: [
        
          vmid: "description",
          name: "description",
          content:
            "hello world, this is an example of adding a description with vueMeta",
        ,
      ],
    ;
  ,
;

【问题讨论】:

你发现问题了吗? 还没有。但是对于替代解决方案,我将 vue 版本降级为 vue 2。 看起来,我也必须这样做。 :// 【参考方案1】:

编辑:这里正在跟踪问题https://github.com/nuxt/vue-meta/issues/628

tldr

从您的语法(例如,createApp(App).use(router)... 等)看来,您使用的是 Vue3。 vue-meta 插件是为 Vue2 开发的,在开发者创建相应版本之前,它不能与 Vue3 一起使用。

原因

在 Vue3 中,api 已更改。 app 对象被传递到插件的 install 方法中,而不是 Vue 构造函数中。

Vue 2 安装定义

install: (Vue, options) =&gt;

Vue 3 安装定义

install: (app, options) =&gt;

有一个版本 3

位于此处https://www.npmjs.com/package/vue-3-meta 但是 - 似乎包裹坏了。它基本上只是安装 vue-meta。

【讨论】:

【参考方案2】:

我认为你应该使用 metaInfo 属性:Doc

export default 
  name: "Home",
  metaInfo() 
    return 
      title: "test meta data with vue",
      metaInfo: [
        
          vmid: "description",
          name: "description",
          content:
            "hello world, this is an example of adding a description with vueMeta",
        ,
      ],
    ;
  ,
;

【讨论】:

错误仍然出现。我应该使用 nuxt.js 来使用 vue-meta 吗?目前我只使用vue 你能用完整的错误日志更新你的帖子吗?

以上是关于Vue-meta:无法设置未定义的属性“$meta”的主要内容,如果未能解决你的问题,请参考以下文章

vue3使用vue-meta

在 Nuxt.js 中使用 Vue-Meta 内联 Js

javascript nuxt.config.js文件的示例在nuxt和vue-meta文档示例中进行了大量评论

无法读取未定义的属性(读取“$store”)

Vue meta 没有得到更新

如何从组件属性访问类成员?