Nuxt:标题功能不适用于标题或元标记

Posted

技术标签:

【中文标题】Nuxt:标题功能不适用于标题或元标记【英文标题】:Nuxt: Head function not working for title or meta tags 【发布时间】:2020-01-20 15:10:59 【问题描述】:

我有一个用 Nuxt 构建的网页,对于不同的页面,我希望在头部有不同的标题和不同的元描述。我该怎么做?

我在 Nuxt 文档中找到了 head() 方法,但这似乎对我不起作用。

在我的contact.vue中:

export default class Contact extends Vue 
   head() 
      return 
         title: 'Contact page',
         meta: [
             hid: 'description', name: 'description', content: 'This is a contact page' 
         ]
      
   

在我的 nuxt.config.js 中:

head: 
    title: 'My website',
    meta: [
       charset: 'utf-8' ,
       name: 'viewport', content: 'width=device-width, initial-scale=1' ,
       hid: 'description', name: 'description', content: process.env.npm_package_description || '' 
    ],

根据文档,我希望这会生成元标记。但它只显示在 nuxt.config.js 中声明的标题和元描述。我在这里错过了什么?

【问题讨论】:

【参考方案1】:

我想通了。 在组件中,我将 head 方法放在类中。这没有用。当我把它放在组件装饰器中时,像这样:

 @Component(
    head(): object 
      return 
        title: this.$i18n.t('meta.home.title'),
        meta: [
          
            hid: 'description', 
            name: 'description',
            content: this.$i18n.t('meta.home.description') 
          ,   
        ]
      
    
  )
  export default class Home extends Vue 
   ...

确实有效。

一开始我遇到了一个错误

Object literal may only specify known objects and 'head' does not exist in type 'ComponentOptions'

通过像这样扩展 ComponentOptions 来解决这个问题:

 declare module "vue/types/options" 
    interface ComponentOptions<V extends Vue> 
      head?: etc etc
    
  

【讨论】:

以上是关于Nuxt:标题功能不适用于标题或元标记的主要内容,如果未能解决你的问题,请参考以下文章

自定义提取器不适用于 Nuxt PurgeCSS

SCSS/SASS 文件不适用于电子 nuxt

Vuex Mutation 不适用于 Nuxt.js

TailwindCSS 自定义主题不适用于 Nuxt.js

环境变量不适用于带有 Nuxt 的 Vercel

Vue 插件适用于 nuxt 服务器负载但不适用于客户端导航(vue-scrollactive)